2015-07-09 2 views
2

У меня проблема. Вот мой код:array_replace_recursive не заменяет массив некоторым пустым массивом

$a = ['elm1' => 1, 'elm2' => []]; 
$b = ['elm1' => 2, 'elm2' => [3]]; 
$c = array_replace_recursive($b, $a); 

В $ с я ожидаю увидеть [ 'elm1' => 1, 'elm2' => []], однако я [ 'elm1' => 1, 'elm2' => [3]]. Он не заменяет 'elm2' => [3] с 'elm2' => [].

Это какая-то особенность или это ошибка в array_replace_recursive?

спасибо.

+0

возможный дубликат [Заменить массив PHP] (HTTP: // стек overflow.com/questions/29425689/replace-array-php) –

ответ

0

Использование array_merge(): -

<?php 

$a = ['elm1' => 1, 'elm2' => []]; 
$b = ['elm1' => 2, 'elm2' => [3]]; 
$c = array_merge($b,$a); //it will check the indexes in both array and if indexes are same then first array value will remain on that index second will replace. 

echo "<pre/>";print_r($c); 
?> 

Выход: - https://eval.in/395368

+0

'array_merge' заменит все значения для соответствующего' ключа' поддиапазона, в то время как 'array_replace_recursive' заменит только' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' .. –

+0

Большое вам спасибо! – glukkkk

+0

'array_merge' будет работать здесь, но OP нужно' array_replace' вместо @ b0s3 @anantkumarsingh вам нужно объяснить, почему 'array_merge' вы использовали слишком –

2

Вместо array_replace_recursive вам нужно просто array_replace в

$a = ['elm1' => 1, 'elm2' => []]; 
$b = ['elm1' => 2, 'elm2' => [3]]; 
$c = array_replace($b, $a); 
print_r($c);//['elm1' => 1, 'elm2' => []] 

Fiddle

+0

Но вы используете 'array_replace_recursive'. –

+0

Теперь все это хорошо. –

+0

О, мой плохой ......! @ b0s3 –

Смежные вопросы