2016-02-11 67 views
0

我知道這已經被回答了上百遍,但這簡直太奇怪了。我有這樣的代碼:檢查所有內容後爲foreach提供的參數無效

if (isset($vendor_social) && !is_null($vendor_social) && count($vendor_social) > 0) { 
    foreach ($vendor_social as $soc) { ... } 
} 

我仍然得到()提供的foreach

無效參數

在該行。這是怎麼發生的?

+2

'$ vendor_social'的'var_dump'告訴你什麼?例如,它可能是字符串類型,它應該是數組。你可以添加'is_array($ vendor_social)'到你的支票。 – max

+2

添加一個'is_array()'到該檢查。只有數組可以在'foreach'循環中補充。 – Qirel

+0

啊好的,好點。我會檢查,看看會發生什麼。我的測試數據不會拋出這個錯誤;它只發生在生產中,我不想用一堆vardumps填充我的託管服務的日誌。 – Andy

回答

1

它可能是字符串類型,例如它應該是一個數組。您可以在支票上添加is_array($vendor_social)

1

這很可能是$vendor_social不是一個數組,或者更確切地說不是一個Traversable。

例如,一個非空字符串將滿足您的條件但未通過foreach。