检查所有内容后为foreach提供的参数无效
问题描述:
我知道这已经被回答了上百遍,但这简直太奇怪了。我有这样的代码:检查所有内容后为foreach提供的参数无效
if (isset($vendor_social) && !is_null($vendor_social) && count($vendor_social) > 0) {
foreach ($vendor_social as $soc) { ... }
}
我仍然得到()提供的foreach
无效参数
在该行。这是怎么发生的?
答
它可能是字符串类型,例如它应该是一个数组。您可以在支票上添加is_array($vendor_social)
。
答
这很可能是$vendor_social
不是一个数组,或者更确切地说不是一个Traversable。
例如,一个非空字符串将满足您的条件但未通过foreach。
'$ vendor_social'的'var_dump'告诉你什么?例如,它可能是字符串类型,它应该是数组。你可以添加'is_array($ vendor_social)'到你的支票。 – max
添加一个'is_array()'到该检查。只有数组可以在'foreach'循环中补充。 – Qirel
啊好的,好点。我会检查,看看会发生什么。我的测试数据不会抛出这个错误;它只发生在生产中,我不想用一堆vardumps填充我的托管服务的日志。 – Andy