为foreach()提供的无效参数我经常遇到这样的情况:处理数据,这些数据既可以是数组,也可以是空变量,并提供一些foreach用这些数据。$values = get_values();foreach ($values as $value){
...}当您用非数组的数据填充外汇时,您会得到一个警告:警告:为[.]中的foreach()提供的无效参数假设不可能重构get_values()函数要始终返回数组(向后兼容性,而不是可用的源代码,无论其他原因如何),我想知道哪种方法是避免这些警告的最干净和最有效的方法:铸造$values数组初始化$values数组包扎foreach带着if其他(请建议)
4 回答

喵喵时光机
TA贡献1846条经验 获得超7个赞
if (is_array($values) || is_object($values)){ foreach ($values as $value) { ... }}

largeQ
TA贡献2039条经验 获得超7个赞
请不要依赖铸造作为解决方案。
注意:
例如:将布尔值转换为数组 (array)bool
威尔 不结果是一个空数组,但是一个包含布尔值作为int的元素的数组: [0=>0]
或 [0=>1]
.
null
, false
, true
class
array
undefined
.
在使用之前,一定要测试您的输入。建议:
快速类型检查 :$array = is_array($var) or is_object($var) ? $var : [] ;
在使用foreach和 包扎 使用 try{}catch(){}
砌块 在产品发布前设计适当的代码/测试 要根据适当的格式测试数组,可以使用 array_key_exists
在特定的钥匙上, 始终将助手方法解压缩到全局命名空间中,以减少重复代码。
- 4 回答
- 0 关注
- 1268 浏览
添加回答
举报
0/150
提交
取消