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';