本文介绍了数组索引的PHP对象键值比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个数组,两个数组的索引都包含对象
I have two arrays where indexes of both arrays are contains objects
$array1=array(1) {
[0]=> object(stdClass) (3) {
["aid"]=> string(1) "1"
["a_number"]=> string(1) "0"
["id_of"]=> string(1) "1"
}
}
$array2=array(3) {
[0]=> object(stdClass) (3) {
["id"]=> string(1) "1",
["number"]=> string(1) "0" ,
["flag"]=> string(1) "1" ,
["zflag"]=> string(1) "0" ,
["xflag"]=> string(1) "1"
} ,
[1]=> object(stdClass) (3) {
["id"]=> string(1) "2",
["number"]=> string(1) "2" ,
["flag"]=> string(1) "2" ,
["zflag"]=> string(1) "0" ,
["xflag"]=> string(1) "1"
},
[1]=> object(stdClass) (3) {
["id"]=> string(1) "3",
["number"]=> string(1) "3",
["flag"]=> string(1) "3" ,
["zflag"]=> string(1) "0" ,
["xflag"]=> string(1) "1"
}
}
我想比较$array2
所有元素中$id
键的值和$id_of
每个$array1
元素的值,如果不存在,则返回$array1
元素.以下是我的代码,但不起作用
I want to compare between the value of $id
key in all elements of $array2
with the value of $id_of
each element of $array1
, if it's not exist then return the element of $array1
. Below is my code but it doesn't work
public function unanswered($array1,$array2){
if(!(empty($array2))){
$unanswered_arrays=array();
foreach($array1 as $b){
foreach($array2 as $a){
if($b->id != $a->id_of){
array_push($unanswered_arrays,(object)$b);
}
}
}
return $unanswered_arrays;
}
return $array1;
}
推荐答案
如果您将函数用作unanswered($array1,$array2)
,则在foreach循环中将$array1
替换为$array2
,反之亦然,或者通过unanswered($array2,$array1)
而不是.
If you're using your function as unanswered($array1,$array2)
then replace $array1
with $array2
and vice versa in foreach loops or pass unanswered($array2,$array1)
instead of.
Demo
这篇关于数组索引的PHP对象键值比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!