我有两个具有相同键的数组。我想将数组a与数组b进行比较,并返回不在b中的a的整行数组。我把它们都搞砸了,无法获得所需的结果。我的数组如下:
//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
)
)
这是当i array_diff_assoc(b,a)时的结果
Array
(
[1] => Array
(
[pid] => 12343
[name] => serv3er
[descr] => ser3ver
[creator] => se3rver
[datetime] => serve3r
)
)
但是当我比较a和b时,它是空白的。
我甚至想更进一步,只比较数组的第一个值(在这种情况下是pid),如果它不在两者中,则返回一行
在这里查看第二个答案:带有多维数组的array_diff()。(几乎是你唯一没有尝试过的变体;-)
使用array_udiff(http://us2.php.net/array_udiff)似乎是最好的解决方案。
这是这两个函数之间的区别: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);
/* Output:
Array
(
[b] => 22
[d] => yellow
)*/
echo "'n";
echo "'n";
$result = array_diff_assoc($a1, $a2);
print_r($result);
/*
Array
(
[a] => red
[b] => 22
[c] => blue
[d] => yellow
)
*/
签入链接:https://onecompiler.com/php/3xu58w6mx
更多解释
array_diff_assoc()函数用于将一个数组与另一个数组进行比较,并返回差值。与array_diff()不同,数组键也用于比较。将与其他阵列进行比较的第一个阵列。与第一个数组相比。