相交一维或者多维阵列
问题描述:
一维阵列相交一维或者多维阵列
$arr1 = array(3) {
["Gold"]=> "170"
["Diamond"]=> "301"
["Platinum"]=> "302"
}
多维数组
$arr2 = array(3) {
[0]=>
array(2) {
["ID"]=> "p103"
["PID"]=> "301"
}
[1]=>
array(2) {
["ID"]=> "p104"
["PID"]=> "302"
}
[2]=>
array(2) {
["ID"]=> "p105"
["PID"]=> "300"
}
}
与相交可以是
array(2) {
[0]=>
array(2) {
["ID"]=> "301"
["PID"]=> "Diamond"
}
[1]=>
array(2) {
["ID"]=> "302"
["PID"]=> "Platinum"
}
}
我已经使用PHP array_intersect()
试过, $Data = array_intersect_assoc($arr1,$arr2);
但有些遗失。 任何建议和帮助,可以赞赏。谢谢
答
您可以简单地循环并为PID字段分配适当的值。
$array1 = array(
"Gold" => "170",
"Diamond" => "301",
"Platinum" => "302"
);
$array2 = array(
array(
"ID" => "p103",
"PID" => "301"
),
array(
"ID" => "p104",
"PID" => "302"
),
array(
"ID" => "p105",
"PID" => "300"
)
);
$array1 = array_flip($array1); // Flipping first array so that we can directly use the values Gold, Diamond corresponding to 301, 301 ...
foreach ($array2 as $k => &$arr) {
/*
* If value exists in array 1 then assign it to PID
* Otherwise, unset this array key
*/
if (isset($array1[$arr['PID']])) {
$arr['PID'] = $array1[$arr['PID']];
} else {
unset($array2[$k]);
}
}
+0
完美的作品,谢谢,以及如何掌握数组? –
+0
你只需要坚持像循环基础知识,并建立你的概念。并熟悉基本的数组功能。 –
+0
why&in'&$ arr' ?.请解释 –
我们可以看看'array_intersect()'的尝试吗? – halfer
@halfer请参阅编辑的问题。 –