#php #multidimensional-array
#php #многомерный массив
Вопрос:
Я изо всех сил пытаюсь сравнить 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 $resu<
}
Я получаю следующую ошибку?
Неустранимая ошибка: невозможно использовать объект типа 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 $resu<
}
Комментарии:
1. вы пробовали передавать по ссылке?
2. использовать
->ID
вместо['ID']
?3. и
$Array2['ID']
должно быть$newItem->ID
?
Ответ №1:
Чтобы получить доступ к этому объекту класса std, вам нужно получить к нему доступ $Array2->ID
следующим образом: вы обращаетесь к нему как к массиву, поэтому появляется эта ошибка.