检查所有内容后为foreach提供的参数无效

问题描述:

我知道这已经被回答了上百遍,但这简直太奇怪了。我有这样的代码:检查所有内容后为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

它可能是字符串类型,例如它应该是一个数组。您可以在支票上添加is_array($vendor_social)

这很可能是$vendor_social不是一个数组,或者更确切地说不是一个Traversable。

例如,一个非空字符串将满足您的条件但未通过foreach。