a little enhancement to dyer85 at gmail dot com's function below:
<?php
if (!function_exists('array_replace'))
{
function array_replace( array &$array, array &$array1, $filterEmpty=false )
{
$args = func_get_args();
$count = func_num_args()-1;
for ($i = 0; $i < $count; ++$i) {
if (is_array($args[$i])) {
foreach ($args[$i] as $key => $val) {
if ($filterEmpty && empty($val)) continue;
$array[$key] = $val;
}
}
else {
trigger_error(
__FUNCTION__ . '(): Argument #' . ($i+1) . ' is not an array',
E_USER_WARNING
);
return NULL;
}
}
return $array;
}
}
?>
this will allow you to "tetris-like" merge arrays:
<?php
$a= array(
0 => "foo",
1 => "",
2 => "baz"
);
$b= array(
0 => "",
1 => "bar",
2 => ""
);
print_r(array_replace($a,$b, true));
?>
results in:
Array
(
[0] => foo
[1] => bar
[2] => baz
)
array_replace
(PHP 5 >= 5.3.0)
array_replace — İlk dizinin elemanlarını aktarılan dizilerden günceller
Açıklama
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() ardışık işlem yapmaz; ikinci dizide ne varsa ilkini onunla günceller.
Değiştirgeler
- dizi
-
Elemanları güncellenecek dizi.
- dizi1
-
İlk diziyi güncelleyecek dizi.
Dönen Değerler
Bir hata durumunda NULL aksi takdirde bir dizi döner.
Örnekler
Örnek 1 - array_replace() örneği
<?php
$esas = array("portakal", "muz", "elma", "armut");
$ikame = array(0 => "karpuz", 4 => "kavun");
$ikame2 = array(0 => "dondurma");
$sepet = array_replace($esas, $ikame, $ikame2);
print_r($sepet);
?>
Yukarıdaki örneğin çıktısı:
Array
(
[0] => ahududu
[1] => muz
[2] => elma
[3] => armut
[4] => dondurma
)
Ayrıca Bakınız
- array_replace_recursive() - İlk dizinin elemanlarını aktarılan dizilerden ardışık olarak günceller
array_replace
06-Nov-2009 12:19
29-Jul-2009 04:45
For a backward compatible alternative, you might try something like this:
<?php
if (!function_exists('array_replace'))
{
function array_replace( array &$array, array &$array1 )
{
$args = func_get_args();
$count = func_num_args();
for ($i = 0; $i < $count; ++$i) {
if (is_array($args[$i])) {
foreach ($args[$i] as $key => $val) {
$array[$key] = $val;
}
}
else {
trigger_error(
__FUNCTION__ . '(): Argument #' . ($i+1) . ' is not an array',
E_USER_WARNING
);
return NULL;
}
}
return $array;
}
}
?>
