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áparray_replace_recursive($array1, $array2 [, $array3...]);

Trong đó :

  • $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ụ

Code
$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>";	

Kết quả
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$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

Các loại function khác

Nguồn: freetuts.net