Hàm array_replace_recursive() trong PHP
Hàm array_replace_recursive()
sẽ thay thế các phần tử của mảng đầu tiên bằng các phần tử của mảng thứ hai nếu chúng có cùng khóa. Nếu khóa của phần tử chỉ tồn tại ở mảng thứ nhất, phần tử đó sẽ được giữ nguyên. Nếu khóa chỉ tồn tại ở mảng thứ hai, phân tử đó sẽ được thêm vào cuối mảng một.Nếu có nhiều hơn 2 mảng truyền vào, các mảng truyền vào sẽ được ưu tiên thay thế đè lên mảng trước đó nếu có khóa trùng nhau.
Khá giống với hàm array_replace()
phải không. Tuy nhiên nếu các phần tử của các mảng truyền vào đều là các mảng thì sao, cùng tìm hiểu ví dụ nhé.
Cú pháp
Cú pháp: array_replace_recursive($array1, $array2 [, $array3...]);
Trong đó :
Bài viết này được đăng tại [free tuts .net]
$array1
là mảng gốc để thay thế.$array2, $array3
... là các mảng truyền vào, để so sánh khóa với mảng$array1
và thay thế.
Kết quả trả về là một mảng mới với các phần tử đã được thay thế.
Ví dụ
$array = array( 'spain' => array( "Madrid") , 'England' => array( "Liverpool", "London" ) ); $replacements = array( 'spain' => array('Barcelona'), 'England' => array('Manchester') ); $result = array_replace_recursive($array, $replacements); echo "<pre>"; print_r($result); echo "</pre>"; $result = array_replace($array, $replacements); echo "<pre>"; print_r($result); echo "</pre>";
Array ( [spain] => Array ( [0] => Barcelona ) [England] => Array ( [0] => Manchester [1] => London ) ) Array ( [spain] => Array ( [0] => Barcelona ) [England] => Array ( [0] => Manchester ) )
Ta có thể thấy, nếu dùng hàm array_replace_recursive()
nó sẽ chỉ tìm đến khóa của mảng $array
và $replacements
rồi thay thế chứ không quan tâm đến giá trị của phần tử đó có là mảng hay không.
Tham khảo:php.net