【问题标题】:PHP object key value comparison of array indexes数组索引的PHP对象键值比较
【发布时间】:2020-04-10 16:41:14
【问题描述】:

我有两个数组,其中两个数组的索引都包含对象

$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键的值与$array1的每个元素的$id_of的值,如果不存在则返回$array1的元素。以下是我的代码,但它不起作用

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;
    }

【问题讨论】:

  • 你想要的输出是什么?很难理解
  • @aksen 我得到空值
  • 您能否也显示您期望的输出 - 这将有助于测试任何解决方案。

标签: php arrays loops object


【解决方案1】:

如果您将函数用作unanswered($array1,$array2),则在foreach 循环中将$array1 替换为$array2,反之亦然,或者传递unanswered($array2,$array1) 而不是。

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-03
    • 2015-09-07
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    • 2013-05-17
    相关资源
    最近更新 更多