Я нашел способ решить мою проблему, но я хочу посмотреть, есть ли лучшее или ясное решение для этого. У меня есть два ассоциативных массива, как это:
$person= [
"A" => [
"sur" => "a",
"fir" => "andras"],
"C" => [
"sur" => "b",
"fir" => "balint"]
];
$data = [
"A" => ["011", "012", "013"],
"C" => ["021", "022"]
];
Я хочу отобразить два массива, если их ключи равны. Таким образом, результат должен выглядеть следующим образом:
$person= [
"A" => [
"sur" => "a",
"fir" => "andras",
"tel" => ["011", "012", "013"]
],
"C" => [
"sur" => "b",
"fir" => "balint",
"tel" => ["021", "022"]
]
];
Мой код:
foreach ( array_intersect_key(array_keys($data,$person)) as $id) {
$person[$id]['tel'] = $data[$id];
}
Ваш метод выглядит хорошо для меня. Для вашего примера я бы сделал это так:
array_walk($person, function(&$v, $k) use ($data) {
$v['tel'] = $data[$k];
});
Просто потому, что когда я возвращаюсь к коду через несколько месяцев, я быстро вижу, что я перебираю и изменяю массив с использованием array_walk — я думаю, что это действительно личное предпочтение.
Похоже, что вы хотите зациклить два массива с одинаковым индексом …
так попробуй это
foreach ($person as $key => $value) {
$person[$key]['tel'] = $data[$key];
}
var_dump($person);