2012-10-25 63 views
1

任何人都可以解釋此行爲嗎?PHP stdClass設置'id'屬性的奇怪行爲

$object = new stdClass(); 


    //This works. 
    $object->test = "Test"; 

    //This works. 
    $arbitrary = "arbitrary"; 
    $object->$$arbitrary = "again, testing"; 

    //This works. 
    $object->id = "2"; 

    //This fails 
    $test = "id"; 
    $object->$$test = "2"; // On this line. 

我想通過動態變量名來設置'id'屬性。如果我明確聲明它,我可以設置'id'屬性。我可以動態設置其他變量名稱,即「任意」。有什麼建議麼?

回答

3

沒有變量名稱爲$id

試試這個

$id = "2"; 

$test = "id"; 
$object->$$test = "2"; // On this line. 
+0

謝謝。我在想,$ object - > $$ test會計算到$ object-> id,但是它會在名爲id的變量中查找值。我想我正在尋找的是$ object - > {$ test}來評估$ object-> id。 –

0

有一個語法錯誤。你想這個我相信:

$object->{$test} 

代替

$object->$$test 
1

它是關於PHP如何評估$object->$$test;

首先在$$test進行評估,這將導致一個變種$id,這是給人一種Notice: Undefined variable: id

一個解決辦法是定義一個變量$id,但更好的方法是使用$object->{$test}