【问题标题】:Comparing two multidimensional object arrays比较两个多维对象数组
【发布时间】:2014-06-25 16:43:17
【问题描述】:

我正在努力比较 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 类型的对象作为数组

有人可以指导我哪里出错了吗?或者是否有其他更简单的方法?

修复

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

【问题讨论】:

  • 你试过通过引用传递吗?
  • 使用->ID 代替['ID']?
  • $Array2['ID'] 应该是$newItem->ID

标签: php multidimensional-array


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多