比较两个多维对象数组

时间:2014-06-25 16:43:17

标签: php multidimensional-array

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

数组1

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类型的对象作为数组

有人可以指导我,因为我错了吗?或者,如果有更简单的方法?

FIX

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

1 个答案:

答案 0 :(得分:1)

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