我正在努力比较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
这样访问它你像访问数组一样访问它,因此这个错误弹出