2014-11-02 113 views
0

一直在尋找整天的解決方案......對象不能獲得對象屬性的PHP數組(類stdClass的客體不能轉換成字符串)

我的變量名是$ categoryFetchedAsObj 的var_dump結果:

array(104) { 
[0]=> 
object(stdClass)#411 (1) { 
["categoryHive"]=> 
string(4) "asfa" 
} 

[1]=> 
object(stdClass)#412 (1) { 
["categoryHive"]=> 
string(13) "ENERGY DRINKS" 
} 

[2]=> 
object(stdClass)#413 (1) { 
["categoryHive"]=> 
string(7) "KETCHUP" 
} 

[3]=> 
object(stdClass)#414 (1) { 
["categoryHive"]=> 
string(6) "STICKS" 
} 

我調用一個函數...

createSelectBlock("category",$categoryFetchedAsObj,"onchange=\"this.form.submit()\"",null,'categoryHive'); 

這裏是功能

createSelectBlock($名稱,$ fetchedNamesAsArrayOfObj,$ selectEvent,$ objPropertyNameForOptionsValue,$ objPropertyNameForOptionsName)

的實例,這裏是哪裏的錯誤引起

foreach ($fetchedNamesAsArrayOfObj as $rowArrayObj) { 

       if(isset($objPropertyNameForOptionsValue) && isset($objPropertyNameForOptionsName)){ 
       $selectBlock.="<option value=\"$rowArrayObj->$objPropertyNameForOptionsValue\">$rowArrayObj->$objPropertyNameForOptionsName</option>"; 
       } 
       if(!isset($objPropertyNameForOptionsValue) && isset($objPropertyNameForOptionsName)){ 
       $selectBlock.="<option value=\"$rowArrayObj->$objPropertyNameForOptionsName \">$rowArrayObj->$objPropertyNameForOptionsName</option>"; 
       } 

     }    

(對象的類stdClass無法轉換爲字符串)

如果我替換 $ rowArrayObj - > $ objPropertyNameForOptionsName

$rowArrayObj->categoryHive 

一切正常,但功能的ARG遊戲不一樣的所有的時間。顯然

我搜索這個網站上發現了一些建議..但沒有在這裏工作 是我tryied

$objPropertyNameForOptionsName='$objPropertyNameForOptionsName'; 
$rowArrayObj->{'$objPropertyNameForOptionsName'}; 

有什麼想法嗎?

+0

進出口發現很難套用您的具體情況,但你剛剛嘗試過:'$ rowArrayObj-> objPropertyNameForOptionsName;'? – JammyDodger231 2014-11-02 21:34:55

+0

你可以看到即時通過PHP創建一個選擇標記...如果我用(categoryHive)替換$ objPropertyNameForOptionsName一切正常,但$ objPropertyNameForOptionsName值是categoryHive ..所以我不明白爲什麼即時通訊得到這個錯誤... – 2014-11-02 22:33:54

回答

0

經過測試並通過測試..芬利我得到它的工作... 這是我的情況正確答案

if(isset($objPropertyNameForOptionsValue) && isset($objPropertyNameForOptionsName)){ 
        $selectBlock.="<option value=".$rowArrayObj->$objPropertyNameForOptionsValue.">".$rowArrayObj->$objPropertyNameForOptionsName."</option>"; 
} 
if(!isset($objPropertyNameForOptionsValue) && isset($objPropertyNameForOptionsName)){ 
       $selectBlock.="<option value=".$rowArrayObj->$objPropertyNameForOptionsName.">".$rowArrayObj->$objPropertyNameForOptionsName."</option>"; 
} 

希望它能幫助別人

相關問題