我遇到了一個我似乎無法找到解決方案的問題。在foreach循環在陣列上使用str_replace
foreach($results->result as $item)
以下代碼
$item->title = str_replace(" - Home", "", $item->title);
總是引發錯誤
捕獲的致命錯誤:類stdClass的的對象不能被轉換成字符串
我以爲str_replace
能夠處理數組?爲了實現這個目標,我需要改變什麼?
感謝您的任何建議!
我遇到了一個我似乎無法找到解決方案的問題。在foreach循環在陣列上使用str_replace
foreach($results->result as $item)
以下代碼
$item->title = str_replace(" - Home", "", $item->title);
總是引發錯誤
捕獲的致命錯誤:類stdClass的的對象不能被轉換成字符串
我以爲str_replace
能夠處理數組?爲了實現這個目標,我需要改變什麼?
感謝您的任何建議!
這不是一個數組,它是一個對象,,因爲錯誤說 ...你有沒有用json_decode()
得到它?
然而,解決方法很簡單 - 將它轉換爲一個數組:
$item->title = str_replace(" - Home", "", (array) $item->title);
關於這一點的另一個問題是,如果你是想修改$results->result
保存的數據,而不是僅僅是它的複製品,你需要你的foreach
是:
foreach($results->result as &$item)
...並獲得項目作爲參考,而不是副本...
非常感謝您的詳細解答! – rafleo
做一個var_dump
在$item->title
,因爲它不是一個數組,它是一個對象。 str_replace
只能處理實際的數組和字符串。如果你希望這是一個數組,那麼你可能在其他地方有一些問題,我會研究這個。
如果你只是在尋找一個補丁,你可能能夠逃脫鑄造它。如果一切工作,我會做這個,因爲它確實具有最少的副作用:
// convert it to an array before passing it through str_replace
// (array) $item->title
// then convert it back to its original form by casting the result back
// (object) str_replace
$item->title = (object) str_replace(" - Home", "", (array) $item->title);
如果title
必須是一個數組,你可以逃脫不(object)
,但我認爲這將是一個更好的想法來追蹤哪裏設置了title
,並具有正確的值。
順便說一句—如果你在使用$item->title
外循環的規劃,還需要確保您使用的參考,因此,該項目本身被更新:
foreach($results->result as &$item)
{
$item->title = (object) str_replace(" - Home", "", (array) $item->title);
}
$item->title
似乎成爲stdClass
類型的對象,而不是字符串。請執行var_dump($item->title)
以查看對象的外觀。
此外,您環路不會做你所期望的,在循環結束後,在$results->result
所有對象仍會有相同的值(使用foreach($results->result as &$item)
(按引用傳遞))
做的var_dump($本期特價貨品>標題); – dynamic
它可以處理數組,但在你的情況下'$ item-> title'是一個對象。 – deviousdodo
謝謝大家的驚人快速幫助! :) – rafleo