Я также назвал Гамбо предпочтительным решением, но он предложил не совсем то, о чем спрашивали, что может привести к некоторой путанице в отношении того, почему member1o
выглядит больше как member1a
.
Чтобы убедиться, что это ясно сейчас, есть два способа (теперь 3 способа, начиная с 5.4), чтобы получить тот же stdClass
в php.
В соответствии с длинным или ручным подходом к вопросу:
$object = new stdClass;
$object->member1 = "hello, I'm 1";
$object->member1o = new stdClass;
$object->member1o->member1 = "hello, I'm 1o.1";
$object->member2 = "hello, I'm 2";
Укороченная или однострочная версия (расширенная для ясности) для приведения объекта из массива, по предложению аля Гамбо.
$object = (object)array(
'member1' => "hello, I'm 1",
'member1o' => (object)array(
'member1' => "hello, I'm 1o.1",
),
'member2' => "hello, I'm 2",
);
PHP 5.4+ Стиль объявления укороченного массива
$object = (object)[
'member1' => "hello, I'm 1",
'member1o' => (object)['member1' => "hello, I'm 1o.1"],
'member2' => "hello, I'm 2",
];
И тот и другой даст одинаковый результат:
stdClass Object
(
[member1] => hello, I'm 1
[member1o] => stdClass Object
(
[member1] => hello, I'm 1o.1
)
[member2] => hello, I'm 2
)
NJoy!