جایگزینی بازگشتی (array_replace_recursive)
تابع «array_replace_recursive» برای «جایگزینی بازگشتی آرایه» استفاده می شود. جایگزینی بازگشتی یعنی تعویض مقدارها در عمقِ آرایه های تو در تو. مثل تعویض برچسب ها در پوشه های توی هم.
تعریف و کاربرد ساده
این تابع مقدارهای آرایه اول را با آرایه های بعدی عوض می کند. اگر کلید مشترک باشد، مقدارش عوض می شود. اگر کلید فقط در دومی باشد، ساخته می شود. با چند آرایه، مقدارهای آرایه آخر غالب است.
سینتکس (Syntax)
array_replace_recursive($array1, $array2, $array3);
نکته: اگر برای هر آرایه کلید تعیین نکنی، رفتار مثل array_replace است.
مثال 1: جایگزینی بازگشتی با دو آرایه
در این مثال، مقدارهای لایه های داخلی نیز جایگزین می شوند. بنابراین آرایه خروجی همه جا به روز می شود.
<?php
$a1 = array("a" => array("red"), "b" => array("green", "blue"));
$a2 = array("a" => array("yellow"), "b" => array("black"));
print_r(array_replace_recursive($a1, $a2));
?>
مثال 2: چند آرایه؛ آخرین آرایه غالب است
وقتی سه آرایه بدهی، مقدارهای آرایه سوم روی همه می نشیند. کلیدهای مشترک عوض می شوند.
<?php
$a1 = array("a" => array("red"), "b" => array("green", "blue"));
$a2 = array("a" => array("yellow"), "b" => array("black"));
$a3 = array("a" => array("orange"), "b" => array("burgundy"));
print_r(array_replace_recursive($a1, $a2, $a3));
?>
مثال 3: تفاوت با array_replace
اینجا می بینی بازگشتی، لایه داخلی را هم عوض می کند. اما غیر بازگشتی فقط لایه اول را عوض می کند.
<?php
$a1 = array("a" => array("red"), "b" => array("green", "blue"));
$a2 = array("a" => array("yellow"), "b" => array("black"));
$result = array_replace_recursive($a1, $a2);
print_r($result);
$result = array_replace($a1, $a2);
print_r($result);
?>
جزئیات فنی کوتاه
خروجی، آرایه جایگزین شده است. در خطا NULL برمی گردد. از PHP 5.3.0 پشتیبانی می شود.
لینک های داخلی مفید
برای «جایگزینی بازگشتی» همین صفحه را مرجع بدان. تفاوت را در array_replace ببین. همچنین صفحه آرایه ها در PHP را مرور کن.
جمع بندی سریع
- جایگزینی بازگشتی عمق آرایه را پوشش می دهد.
- کلید مشترک، مقدارش عوض می شود.
- کلید جدید، در آرایه اول ساخته می شود.
- چند آرایه دادی؟ آخرین آرایه غالب است.