International PHP Conference Berlin 2025

array_replace_recursive

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

array_replace_recursiveİlk dizinin elemanlarını aktarılan dizilerden ardışık olarak günceller

Açıklama

array_replace_recursive(array $dizi, array ...$diziler): array

dizi dizisinin değerlerini belirtilen diğer dizilerin değerleriyle günceller. İlk dizideki bir anahtar ikinci dizide mevcutsa ilk dizideki değer ikinciden güncellenir. İkinci dizide olup ilk dizide olmayan anahtarlar ilk dizide oluşturulur. Sadece ilk dizide bulunan anahtarların değerlerine dokunulmaz. Birden fazla güncelleyici dizi belirtilmişse diziler sırayla işlenir; yani daima sonraki dizideki değerler daima üste yazar.

array_replace_recursive() ardışık işlem yapar: alt dizilerdeki değerleri de aynı şekilde günceller.

İlk dizideki değer sayıl bir değerse, ikinci dizideki sayıl veya dizi değerle güncellenir. İlk ve ikinci dizideki değerlerin ikisi de dizi ise güncelleme işlemi bu alt dizilere ardışık olarak uygulanır.

Bağımsız Değişkenler

dizi

Elemanları güncellenecek dizi.

diziler

İlk diziyi güncelleyecek diziler.

Dönen Değerler

Bir dizi döner.

Örnekler

Örnek 1 - array_replace_recursive() örneği

<?php
$esas
= array('kışlık' => array( "portakal"),
'yazlık' => array("karpuz", "kavun"), );
$ikame = array('kışlık' => array('mandalina'),
'yazlık' => array('üzüm'));

$sepet = array_replace_recursive($esas, $ikame);
print_r($sepet);

$sepet = array_replace($esas, $ikame);
print_r($sepet);
?>

Yukarıdaki örneğin çıktısı:

Array
(
    [kışlık] => Array
        (
            [0] => mandalina
        )

    [yazlık] => Array
        (
            [0] => üzüm
            [1] => kavun
        )

)
Array
(
    [kışlık] => Array
        (
            [0] => mandalina
        )

    [yazlık] => Array
        (
            [0] => üzüm
        )

)

Örnek 2 - array_replace_recursive()ve ardışık işlem

<?php
$esas
= array('kışlık' => array("portakal"),
'yazlık' => array("kavun", "karpuz"),
'diğer' => 'avakado' );
$ikame = array('kışlık' => 'mandalina',
'yazlık' => array('üzüm'),
'diğer' => array('ananas'));
$ikame2 = array('kışlık' => array('nar'),
'yazlık' => array('üzüm'),
'diğer' => 'muz');

$sepet = array_replace_recursive($esas, $ikame, $ikame2);
print_r($sepet);

?>

Yukarıdaki örneğin çıktısı:

Array
(
    [kışlık] => Array
        (
            [0] => nar
        )

    [yazlık] => Array
        (
            [0] => üzüm
            [1] => karpuz
        )

    [diğer] => muz
)

Ayrıca Bakınız

add a note

User Contributed Notes 1 note

up
9
Pau Prat Torrella
4 years ago
Note that function will NOT replace a sub-tree from you $array1 if its value in $array2 is an empty array.
Even tho the key for this dimension is technically 'set'.

(I suppose it treats it as just another recursive level to dive in, finding no key to compare, backtracking while leaving this sub-tree alone)

For example:

$array1 = ['first' => ['second' => 'hello']];
$array2 = ['first' => []];
$result = array_replace_recursive($array1, $array2);

$result is still: ['first' => ['second' => 'hello']].
To Top