我可以禁用特定foreach
语句的警告,更具体地说是“提供的无效参数”警告吗?为特定的foreach禁用“无效参数提供”警告
p.s.我想要一个foreach,当通过null
,而不是抛出一个错误,将不会执行。
我可以禁用特定foreach
语句的警告,更具体地说是“提供的无效参数”警告吗?为特定的foreach禁用“无效参数提供”警告
p.s.我想要一个foreach,当通过null
,而不是抛出一个错误,将不会执行。
替代,类型不可知的,使用类型转换:
foreach ((array)$variable as $s)
会一个NULL转换成空数组或一个整数/字符串转换成具有单个条目的数组。如果您遍历灵活的数据结构(毕竟PHP是一种动态语言),这有时是可取的。失败方法建议用于捕获无效数据(但应该抛出错误)。
不,甚至没有在foreach前面使用@
(但无论如何这将是不好的做法)。
只要做到事先容易is_array()
检查:
if (is_array($variable))
foreach($variable.......
我试着把'@'放在前面,但它会导致错误 - '语法错误,意外的T_FOREACH' – 2010-09-17 15:45:56
然后使用他的第二个建议。那是让我喜欢的人。 – 2010-09-17 15:48:11
@Emanuel真的,我也试过了,不起作用。将纠正我的答案 – 2010-09-17 15:48:23
你可以把它放在
if(isset($variable))
{
foreach($variable ...
}
作品和我在一起。
没有,除非你想禁用所有的警告。或者编写你自己的error_handler,通过检查错误文本明确地过滤掉这个错误。 – Wrikken 2010-09-17 15:43:55
警告有一个很好的理由......有些事情是错误的,所以修复它而不是隐藏和忽略。检查之前,如果'var'是'数组'或'Traversable' – teemitzitrone 2010-09-17 15:44:24