Итак, у меня есть два массива. Старый и новый. Я хочу обновить новый массив переменными из старого массива, но я не хочу добавлять новые индексы, которые находятся в старом массиве, которые не находятся в новом массиве.
$old_array = array("1" => "one", "2" => "two", "3" => "three", "4" => "four");
$new_array = array("1" => "1", "2" => "2", "3" => "3");
Поэтому я хочу, чтобы новый массив был следующим:
$updated_array = array("1" => "one", "2" => "two", "3" => "three");
Может ли кто-нибудь помочь мне с наиболее эффективным способом сделать это?
Я действительно хотел дать @void-main правильный ответ, но он допустил некоторые небольшие ошибки, которые мне пришлось исправить, и он не закончил его обновление. Спасибо, что помогли мне начать работу!
$old_array = array("1" => "one", "2" => "two", "3" => "three", "4" => "four");
$new_array = array("1" => "1", "2" => "2", "3" => "3");
foreach($new_array as $key=>$val){
if(isset($old_array[$key]))
$new_array[$key] = $old_array[$key];
}
//new_array is now the updated array.
Таким образом, новый массив все равно сохранит все значения, даже если они не очевидны в old_array
Можно попробовать использовать foreach()
. Пример:
$old_array = array("1" => "one", "2" => "two", "3" => "three", "4" => "four");
$new_array = array("1" => "1", "2" => "2", "3" => "3");
$updated_array = array();
foreach($new_array as $key=>$val){
if(isset($old_array[$key])){
$updated_array[$key] = $old_array[$key];
}
}
print '<pre>';
print_r($updated_array);
print '</pre>';
$old_array
не имеет ничего от $new_array
? ничто не заканчивается передачей в $updated_array
. Также я думаю, что вы имели в виду $key
в большинстве операторов foreach вместо $val
Вы можете попробовать
$result = array_intersect_key($old_array, $new_array);
Вы можете использовать метод foreach
(предоставляется документация по ключевым значениям): Здесь приведен пример из документов PHP (http://php.net/manual/en/control-structures.foreach.php)
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)