$data1 -
Array([0] => Array([file_id_fk] => 1)
[1] => Array([file_id_fk] => 2)
[2] => Array([file_id_fk] => 5)
[3] => Array([file_id_fk] => 3)
........
[300]=>Array([file_id_fk] => 3)
$data2 -
Array([0] => Array
([file_id] => 1
[file_sender_type] => 1
[file_sender_id] => 1
[file_subject] => test 1)
......
[360]=>Array...
在此,我想将$data1->file_id_fk
与$data2->file_id
进行比较,并打印$data2
中不存在的$data1
值。
答案 0 :(得分:0)
您似乎想要使用array_diff()
,但由于您需要$data2
的额外值,您需要更改顺序:
array_diff($data2, $data)
。
答案 1 :(得分:0)
想象一下自己是PHP Parser。您希望如何看到必须解析的代码?我问自己这个问题并提出以下建议:
$valuesThatAreInTheFirstArrayButNotInTheSecond = array_diff($theFirstArray, $theSecondArray);
我无法做到更多。
作为PHP Parser,我有很好的文档。在所谓的互联网上有一个网站,它描述了我做和喜欢做的事情。您可以在PHP.net Manual
中找到有关我如何解析array_diff()
的文档。
因为数组中有一个数组(起始?),所以可以在数组周围使用current()
函数。这将获取阵列的当前密钥。由于数组中只有一个键,因此总是会选择一个键。
这将使:
$valuesThatAreInTheFirstArrayButNotInTheSecond = array_diff(current($theFirstArray), current($theSecondArray));
显示差异可以这样做:
if (array_key_exists('file_id', $valuesThatAreInTheFirstArrayButNotInTheSecond)) {
echo $valuesThatAreInTheFirstArrayButNotInTheSecond['file_id'];
}
答案 2 :(得分:0)
这不适用于较旧的PHP版本(我目前使用的是5.4)。
$data1ID = array_column($data1, 'file_id_fk');
$results = array_filter($data2, function($v) use ($data1ID){
return !in_array($v['file_id'], $data1ID);
});
print_r($data1);
print_r($data2);
print_r($results);
这是我的输入数据和结果:
/vhost/virtual/sandbox/public/index.php:55
array(5) {
[0] = array(1) {
[file_id_fk] = int(1) 1
}
[1] = array(1) {
[file_id_fk] = int(1) 2
}
[2] = array(1) {
[file_id_fk] = int(1) 5
}
[3] = array(1) {
[file_id_fk] = int(1) 3
}
[4] = array(1) {
[file_id_fk] = int(1) 3
}
}
/vhost/virtual/sandbox/public/index.php:56
array(3) {
[0] = array(4) {
[file_id] = int(1) 1
[file_sender_type] = int(1) 1
[file_sender_id] = int(1) 1
[file_subject] = string(6) "test 1"
}
[1] = array(4) {
[file_id] = int(1) 5
[file_sender_type] = int(1) 5
[file_sender_id] = int(1) 5
[file_subject] = string(6) "test 5"
}
[2] = array(4) {
[file_id] = int(1) 7
[file_sender_type] = int(1) 7
[file_sender_id] = int(1) 7
[file_subject] = string(6) "test 7"
}
}
/vhost/virtual/sandbox/public/index.php:57
array(1) {
[2] = array(4) {
[file_id] = int(1) 7
[file_sender_type] = int(1) 7
[file_sender_id] = int(1) 7
[file_subject] = string(6) "test 7"
}
}
答案 3 :(得分:0)
终于得到了回答朋友非常感谢你
foreach($ data1 as $ val) { $ DATA1 [] = $ VAL [' file_id_fk']; } for($ i = 0; $ i< = count($ data2); $ i ++) { 如果(in_array($数据2 [$ i] ['的file_id']!,$数据1)) { $ data [] = $ data2 [$ i]; } }