У меня есть два двумерных массива (на самом деле они вложенные ассоциативные массивы) с предопределенным строением: $array1
и $array2
. Первый массив содержит список всех объектов по их номерам ID:Объединить двумерные массивы в PHP
$array1 = array(
array(id => 1),
array(id => 2),
array(id => 3),
array(id => 4),
array(id => 5)
);
Второй массив перечислены отношения между объектами (например, объект 2 подключен к объектам 3, 4 и 5):
$array2 = array(
array(id1 => 1, id2 => 2),
array(id1 => 2, id2 => 3),
array(id1 => 2, id2 => 4),
array(id1 => 2, id2 => 5)
);
целью заключается в замене значений id из $array2
соответствующими индексами от $array1
. Итак, в моем случае результат должен быть:
0 1 // index of value 1 (id1) in $array1 is 0, index of 2 (id2) is 1
1 2
1 3
1 4
Вложенный ниже мой текущий труд. Прежде всего, я «преобразовать» $array1
в один одномерный массив:
foreach ($array1 as $row) {
$array3[] = $row['id'];
}
Затем я использую array_search
функцию и пройти через $array2
и поиск $array3
для заданного значения и возвращает соответствующий ключ в $array3
:
foreach ($array2 as $row) {
$value1 = $row['id1'];
$key1 = array_search($value1, $array3);
echo $key1;
echo "\t";
$value2 = $row['id2'];
$key2 = array_search($value2, $array3);
echo $key2;
echo '<br />';
}
Мой вопрос прост: существует ли более элегантный способ сделать это (т. Е. Без использования функции array_search).
Большое спасибо за любые идеи.
Бест, Андрей
Спасибо, работает как Шарм. – Andrej