Php 比较两个数组并显示第二个数组中不存在的值
这里我想比较Php 比较两个数组并显示第二个数组中不存在的值,php,arrays,Php,Arrays,这里我想比较$data1->file_id_fk和$data2->file_id并打印$data2中不存在的$data1值,看起来您可能想使用数组_diff(),但您需要$data2中的额外值,您需要更改以下方面的顺序: array\u diff($data2,$data) 阅读这里的完整文档:想象自己是PHP解析器。您希望如何查看必须解析的代码?我问自己这个问题,并得出以下结论: $data1 - Array([0] => Array([file_id_fk] => 1)
$data1->file_id_fk
和$data2->file_id
并打印$data2
中不存在的$data1
值,看起来您可能想使用数组_diff()
,但您需要$data2
中的额外值,您需要更改以下方面的顺序:
array\u diff($data2,$data)
阅读这里的完整文档:想象自己是PHP解析器。您希望如何查看必须解析的代码?我问自己这个问题,并得出以下结论:
$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...
我再也做不到了
作为PHP解析器,我有很好的文档记录。在所谓的互联网上有一个网站,描述我是如何做和喜欢做事情的。您可以在PHP.net中找到有关如何解析array_diff()
的文档
编辑
因为数组中有一个数组(inception?),所以可以在数组周围使用current()
函数。这将获取阵列的当前密钥。由于数组中只有一个键,因此它将始终拾取该键
因此,这将使:
$valuesThatAreInTheFirstArrayButNotInTheSecond = array_diff($theFirstArray, $theSecondArray);
显示差异可以这样做:
$valuesThatAreInTheFirstArrayButNotInTheSecond = array_diff(current($theFirstArray), current($theSecondArray));
这在较旧的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);
终于得到了答案,朋友们,非常感谢 foreach($data1作为$val) { $data1[]=$val['file_id_fk']; }
对于($i=0;$i)这很简单。为什么不向我们展示一下您已经尝试过的内容呢?如果您有其他选择,我将解释整个过程。请告诉我这实际上是一个sql查询qry=query1不在(query2)这个查询需要很长时间才能执行,所以我将查询拆分并保存在数组中,现在我想检查不在状态。您确实需要花更多的精力正确编写并尝试清楚地表达您的需要和要求。您的这些胡言乱语无助于任何人前进。谢谢您,我已经尝试过了,但收到了不需要的数据NLY您需要澄清您的问题,因为
$data1->file_id_fk
和$data2->file_id
不存在。是的,但存在的值是file_id,file_id_fk是相同的。我想比较这两个值,并检索文件_id_fk中不存在的值
$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"
}
}