2015-07-20 70 views
-1

我有以下对象:推一个Object对象上的数组

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

我想添加一个对象,让我有对象的数组到的问题性质。

$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" 
    } 

我知道我可以指望它,增加计数,再加入我的对象。只是寻找更好的方法。

+0

如果'questions'是一个对象,那么它不是一个数组。你将不得不编写一些逻辑来确定存在的最大属性号/名称,然后添加1.你最好使用一个数组。 – AbraCadaver

+1

@allencoded另请参阅:http://stackoverflow.com/q/10333016/3933332 – Rizier123

+0

这不是一个数组!它是具有数字属性名称的对象。 – AbraCadaver

回答

0

你会过得更好使用数组,这是hackish的,但我很无聊:

$n = max(array_keys(get_object_vars($user->questions))); 
$user->questions->{$n+1} = $new_question_object; 

或较短的(不是真的):

$user->questions->{max(array_keys(get_object_vars($user->questions)))+1} = $new_question_object; 
0

既然你坚持使用对象,你可以做到这一点..

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

其中9在这种情况下,您的首选索引为该项目。

+0

是的意思,我将不得不计数的对象,并添加1 – allencoded

+0

是的。这就是你必须要做的 – Kaspersky

相关问题