我正在努力比较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;
}
答案 0 :(得分:1)
要访问此std类对象,您需要像$Array2->ID
一样访问它
你正在像一个数组一样访问它,因此弹出这个错误。