[英]Merge two-dimensional arrays in PHP
我有兩個二維數組(實際上它們是嵌套的關聯數組),帶有預定義的結構: $array1
和$array2
。 第一個數組按其ID號列出所有對象:
$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)
);
目的是將$array2
id值替換為$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函數)。
非常感謝您的任何想法。
最好的,安德烈
您可以使用將值關聯到索引的關聯數組。
foreach ($array1 as $index => $row) {
$array3[$row['id']] = $index;
}
那么你也能
$key1 = $array3[$value1];
和
$key2 = $array3[$value2];
如果$array1
中的每一行都有一個唯一的ID,則可以翻轉$array3
<?php
$array3 = array();
foreach ($array1 as $k => $v) {
$array3[$v['id']] = $k;
}
foreach ($array2 as $row) {
list($id1, $id2) = $row;
printf("%s\t%s<br />", $array3[$id1], $array3[$id2]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.