比较两个多维对象数组



我正在努力比较2个多维对象数组,如下所示,并将差异添加到空数组。

Array1

array(1) { 
[0]=> object(stdClass)#393 (1) { 
       ["ID"]=> 
       string(3) "433" 
  } 
} 

数组2

array(1) { 
[0]=> object(stdClass)#386 (1) { 
       ["ID"]=> 
       string(3) "433" 
  } 
} 
到目前为止,我使用了以下函数:
function compare_arrays($Array1, $Array2){
$result = array();
    foreach ($Array2 as $index => $newItem) {
    foreach ($Array1 as $oldItem) {             
    if($Array2['ID'] === $oldItem['ID'])
    {
       $result[] = $index;
    }
  }                     
}               
return $result;
}

我得到以下错误?

致命错误:不能使用stdClass类型的对象作为数组

有人可以引导我,我在哪里走错了?或者是否有其他更简单的方法?

修复

代码根据Adeel和Fabricator修复

必须创建一个特殊的类来创建一个空白对象,然后赋值

function compare_arrays($para1, $para2){
    $result = array();
            /*Special class to create a blank object*/
    $data = new stdClass();
    foreach ($para2 as $index => $newItem) {
        foreach ($para1 as $oldItem) {      
            $test2 = $oldItem->ID;
            if($newItem->ID === $oldItem->ID)
            {
                $data->ID = $newItem->ID;
                $result[] = $data;                  
                var_dump($results);
            }
        }                       
    }               
    return $result;
}

要访问这个std类对象,您需要像$Array2->ID这样访问它你像访问数组一样访问它,因此这个错误弹出

相关内容

  • 没有找到相关文章

最新更新