2013-11-28 59 views
0

如果$myObj是:循環訪問對象屬性數組時,如何返回給定現有鍵的數組值?

$myObj = new stdClass(); 
$myObj = array(1 => 100, 2 => 200, 3 => 300); 
echo $myObj[1]; // returns 100, as expected 

但通過性的這樣一個數組迭代時:

$properties_array = array('property_one','property_two'); 
// and $myObj looks like $myObj->property_one = array(0 => 12345); 
foreach ($properties_array as $property) { 
    echo $property; 
    // returns property name, as expected 

    print_r($myObj->$property); 
    // returns an array, as expected (ex. Array([0] => 12345)) 

    echo $myObj->$property[0]; 
    // expected '12345', instead throws an error: 'Undefined property: stdClass::$myObj' 
} 

爲什麼會print_r($myObj->$property);工作不如預期,但echo $myObj->$property[0];拋出一個錯誤?

+0

BTW是什麼'$ properties_array'結構??你可以給我們看一看..?? – Gautam3164

+0

當然,感謝您的幫助。非常直截了當:'$ properties_array = array('property_one','property_two');'和'$ myObj'就像'$ myObj-> property_one = array(0 => 12345);' – Ryan

+1

您是否嘗試過' echo $ myObj - > {$ property} [0];'? – Vallel

回答

2

嘗試做echo $myObj->{$property}[0];

+0

再次感謝。出於好奇,你知道這是爲什麼嗎?或者有一個PHP的參考? – Ryan

+1

這是有效的,因爲你試圖訪問不存在的數組。數組是'$ myObj-> property_one'而不是'$ property'。你可以在http://php.net/manual/en/language.variables.variable.php閱讀更多 – Vallel

0

使用鍵和價值觀念

foreach ($properties_array as $key=>$property) { 
     echo $property;//100 
     echo $key;//1 

    } 

,同時呼應性病類的對象,無法訪問對象

相關問題