我有两个具有相同键的数组。我想检查阵列a对阵列b并返回不在b中的数组的整行。我搞乱了所有这些并且无法获得理想的结果。 我的数组看起来像这样:
//array a
Array
(
[0] => Array
(
[pid] => 457633
[name] => Test
[descr] => sample
[creator] =>
[datetime] =>
)
)
//array b
Array
(
[0] => Array
(
[pid] => 1234
[name] => server
[descr] => server
[creator] => server
[datetime] => server
)
[1] => Array
(
[pid] => 12343
[name] => serv3er
[descr] => ser3ver
[creator] => se3rver
[datetime] => serve3r
)
)
这是我在array_diff_assoc(b,a)
时的结果 Array
(
[1] => Array
(
[pid] => 12343
[name] => serv3er
[descr] => ser3ver
[creator] => se3rver
[datetime] => serve3r
)
)
但是当我将a与b进行比较时,它是空白的。
我甚至想进一步比较数组的第一个值(在这种情况下是pid),如果它不在两者中都返回那一行
答案 0 :(得分:1)
在这里查看第二个答案:array_diff() with multidimensional arrays。 (只是你尝试过的唯一变种;-))
使用array_udiff(http://us2.php.net/array_udiff)似乎是最好的解决方案。
答案 1 :(得分:0)
这就是这两个函数的区别:array_diff | array_diff_assoc
<块引用>你可以对比一下结果来理解
$a1 = array("a" => "red", "b" => 22, "c" => "blue", "d" => "yellow");
$a2 = array("e" => "red", "b" => 33, "g" => "blue");
$result = array_diff($a1, $a2);
print_r($result); // result for array_diff
echo "<br>";
$result = array_diff_assoc($a1, $a2);
print_r($result); // result for array_diff_assoc