我有几个阵列。
阵列1
Array
(
[0] => 501
[1] => 502
[2] => 503
[3] => 505
)
数组2
Array
(
[0] => Array
(
[0] => 503
[1] => 1
)
[1] => Array
(
[0] => 505
[1] => 1
)
)
现在我想要的数组结构应该是
Array
(
[0] => Array
(
[0] => 503
[1] => 1
)
[1] => Array
(
[0] => 505
[1] => 1
)
[2] => Array
(
[0] => 501
[1] => 0
)
[3] => Array
(
[0] => 502
[1] => 0
)
)
我的代码是
foreach($array1 as $k => $v)
{
if( $array2[$k][0] == $v)
{
$finalArr[] = array($array2[$k][0],$array2[$k][1]);
}
else
{
$finalArr[] = array($v,0);
}
}
现在它给了我正确的数组结构,但是两个数组中存在的元素都缺少值。
答案 0 :(得分:1)
问题在于这一行:
if( $array2[$k][0] == $v)
$ k指的是$ array1的索引,而不是$ array2 ...所以除非两个数组中的元素完全同步,否则你的脚本将无效。
答案 1 :(得分:0)
试试这个:
$a_vals2 = array_map(
function ($v) { return $v[1]; },
$array2
);
$result = $array1;
foreach (array_diff($array1, $a_vals2) as $v) {
$result[] = array($v, 0);
}
答案 2 :(得分:0)
if($ array2 [$ k] [0] == $ v)将永远不会返回true(对于提供的数组),因为您要一起检查数组的索引。例如,第二个索引上的503 == 501和505 == 502。在我看来,你的代码只会复制第一个数组(在本例中)。