Можете ли вы сравнить и обновить два массива stdClass?

У меня есть два объекта stdclass, а именно

stdClass Object
(
    [apple] => 10
    [orange] => 10
    [grape] => 10
    [banana] => 20
    [mango] => 30
)

stdClass Object
(
    [apple] => 15
)

Могу ли я обновить Apple, как обычную операцию с массивом? Или есть другой способ сделать это?

Также в чем разница между этим и обычным массивом?


person arjun sreekumar    schedule 13.09.2017    source источник
comment
Это объекты, а не массивы.   -  person Script47    schedule 13.09.2017
comment
Возможный дубликат сравнения свойств объекта и отображения различий в PHP   -  person Mr. Pyramid    schedule 13.09.2017


Ответы (2)


Вы можете просмотреть их, используя обычный цикл foreach:

$obj = new StdClass;

$obj->test = 1;
$obj->more_testing = 2;

foreach ($obj as $key => $value) {
    echo $key . ': ' . $value . '\n\n';
}

или вы можете преобразовать их как свои объекты в массив, используя (array).

Живой пример

Repl

Материалы для чтения

Итерации

person Script47    schedule 13.09.2017

См. Официальную документацию по сравнению объектов:

При использовании оператора сравнения (==) объектные переменные сравниваются простым способом, а именно: два экземпляра объекта равны, если они имеют одинаковые атрибуты и значения (значения сравниваются с ==) и являются экземплярами одного и того же класса. .

При использовании оператора идентичности (===) объектные переменные идентичны тогда и только тогда, когда они относятся к одному и тому же экземпляру одного и того же класса.

Также см. Здесь: Какой самый быстрый способ сравнить два объекты в PHP?

person Bananaapple    schedule 13.09.2017