2012-11-15 54 views
0

這裏的print_r($對象)的結果:如何添加到stdObject數組?

Array 
(
    [0] => stdClass Object 
     (
     [title] => Test procedures in watermelons 
     [nid] => 494 
     [type] => chsmanuscript 
    ) 

    [1] => stdClass Object 
     (
     [title] => How to eat cookies 
     [nid] => 520 
     [type] => chsmanuscript 
    ) 
) 

我如何手動此對象數組中添加第三個對象的項目?我曾嘗試以下,但它不工作:

$object[2]->title = 'test'; 
$object[2]->nid = '999'; 
$object[2]->type = 'chsmanuscript' 

的錯誤是: 致命錯誤:無法使用類型DatabaseStatementBase的對象數組

+0

東西看起來不正確的。這個'print_r($ object)'是否出現在'$ object [2] - > title'之前?你確定'DatabaseStatementBase'錯誤的行號是否與你確定的代碼相符? – grossvogel

+0

是的,我故意遺漏了一些信息。這是運行稱爲db_query的Drupal函數的結果。儘管如此,這還是可以的,因爲我只需要知道如何從PHP的角度來做這件事,而Tim Cooper建議我爲我工作得很好。 – user785179

回答

2

必須先創建特定的陣列中的一個新的stdClass對象元素之前您嘗試訪問它的成員:

$object[2] = new stdClass(); 
$object[2]->title = 'test'; 
$object[2]->nid = '999'; 
$object[2]->type = 'chsmanuscript' 
+0

我不確定'$ object'是一個考慮錯誤的簡單數組:'致命錯誤:不能使用DatabaseStatementBase類型的對象作爲數組' – iMoses

+0

如果'$ object'確實是顯示的數組,那麼這是正確的。錯誤消息使得它看起來像'$ object'是DatabaseStatementBase的一個實例,所以我認爲我們錯過了一些上下文。 – grossvogel

+1

是的,我故意遺漏了一些信息。這是運行稱爲db_query的Drupal函數的結果。儘管如此,這還是可以的,因爲我只需要知道如何從PHP的角度來做這件事,而Tim Cooper建議我爲我工作得很好。 – user785179

1
$object[] = (object)array('title'=>'test', 
        'ndid'=>'999', 
        'type'=> 'chsmanuscript'); 

這推動到陣列中,如果你需要它來推動在t他第三的位置,指定在$對象[#]

+0

這個很棒。我喜歡的是,我可以添加到我現有的stdObject數組中,而不必擔心自己增加的密鑰。 – user785179

+0

通過使用$ object [],它會自動推到最後一個位置,你也可以使用array_push(),但[]是簡寫......這就是你剛剛說的哈哈哎呦回聲!如果它回答給我接受! –

1

你也可以做到這一點

$object[2] = (object)array('title'=>'test', 'nid'=>'999', 'type'=>'chsmanuscript');