【发布时间】: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