I have one array same this:
$object = new stdClass(); $object->name = "test"; $object->age = "24"; $object1 = new stdClass(); $object1->name = "test1"; $object1->age = "25"; $array = array("23" => $object, "24" => $object1); $array2 = [ "23" => ["name" => "John Nathan"], "24" => ["name" => "test 25"] ]; foreach ($array as $key => $item){ if(isset($array2[$key])){ $item->name = $array2[$key]['name']; } } var_dump($array);
I don’t understand why the array displays like this:
array( 'name' => 'test 25', 'age' => '24' ) array( 'name' => 'test 25', 'age' => '25' )
I expect it to show up like this:
array( 'name' => 'John Nathan', 'age' => '24' ) array( 'name' => 'test 25', 'age' => '25' )
Please advise me on how to make it work as expected. Thanks
Advertisement
Answer
<?php $object = new stdClass(); $object->name = "test"; $object->age = "24"; $object1 = new stdClass(); $object1->name = "test1"; $object1->age = "25"; $array = array("23" => $object, "24" => $object1); $array2 = [ "23" => ["name" => "John Nathan"], "24" => ["name" => "test 25"] ]; foreach ($array as $key => $item) { foreach ($array2 as $key2 => $item2) { if ($key == $key2) { $item->name = $item2["name"]; } } } print_r($array); ?>