Php 将单个对象推送到对象数组上

Php 将单个对象推送到对象数组上,php,Php,我的目标如下: $user= object(stdClass)(2) { ["questions"]=> object(stdClass)(1) { [0] => object(stdClass) } ["num_root_responses_for_section"]=> string(1) "0" } 我想添加一个对象,以便在questions属性中有一个对象数组 $user->questio

我的目标如下:

    $user= 
    object(stdClass)(2) 
    { 
        ["questions"]=> object(stdClass)(1) { [0] => object(stdClass) } 
        ["num_root_responses_for_section"]=> string(1) "0" 
    }
我想添加一个对象,以便在questions属性中有一个对象数组

$user->questions[] = $new_question_object;
不工作,因为它不是数组

我想要这样的东西:

object(stdClass)(2) 
    { 
        ["questions"]=> object(stdClass)(2) { 
            [0]=> object(stdClass), 
            [1]=> object(stdClass) }
        ["num_root_responses_for_section"]=> string(1) "0" 
    }

我知道我可以计算它,增加计数,然后添加我的对象。只是想找一个更好的方法。

使用数组会更好,这是一个很粗糙的方法,但我觉得很无聊:

$n = max(array_keys(get_object_vars($user->questions)));
$user->questions->{$n+1} = $new_question_object;
或者更短(不是真的):


既然你坚持使用对象,你就可以这样做

$users->questions->{'9'} = 'value'; 

其中9在本例中是该项的首选索引。

如果
questions
是一个对象,则它不是一个数组。您必须编写一些逻辑来确定存在的最大属性号/名称,然后添加1。您最好使用数组。@allencoded还请参见:它不是数组!它是一个具有数字属性名称的对象。语言的错误使用与错误语言不同。为什么不先将其作为数组使用,然后将最终数组转换为对象?是的,这意味着我必须计算对象并添加1是。这就是你必须要做的
$users->questions->{'9'} = 'value';