array_diff / array_diff_assoc / array_diff_key不确定在这种情况下使用什么

时间:2013-11-22 22:31:38

标签: php arrays

我有两个具有相同键的数组。我想检查阵列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),如果它不在两者中都返回那一行

2 个答案:

答案 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