2010-09-17 125 views
1

我可以禁用特定foreach语句的警告,更具体地说是“提供的无效参数”警告吗?为特定的foreach禁用“无效参数提供”警告

p.s.我想要一个foreach,当通过null,而不是抛出一个错误,将不会执行。

+2

没有,除非你想禁用所有的警告。或者编写你自己的error_handler,通过检查错误文本明确地过滤掉这个错误。 – Wrikken 2010-09-17 15:43:55

+2

警告有一个很好的理由......有些事情是错误的,所以修复它而不是隐藏和忽略。检查之前,如果'var'是'数组'或'Traversable' – teemitzitrone 2010-09-17 15:44:24

回答

8

替代,类型不可知的,使用类型转换:

foreach ((array)$variable as $s) 

会一个NULL转换成空数组或一个整数/字符串转换成具有单个条目的数组。如果您遍历灵活的数据结构(毕竟PHP是一种动态语言),这有时是可取的。失败方法建议用于捕获无效数据(但应该抛出错误)。

5

不,甚至没有在foreach前面使用@(但无论如何这将是不好的做法)。

只要做到事先容易is_array()检查:

if (is_array($variable)) 
foreach($variable....... 
+0

我试着把'@'放在前面,但它会导致错误 - '语法错误,意外的T_FOREACH' – 2010-09-17 15:45:56

+0

然后使用他的第二个建议。那是让我喜欢的人。 – 2010-09-17 15:48:11

+0

@Emanuel真的,我也试过了,不起作用。将纠正我的答案 – 2010-09-17 15:48:23

0

你可以把它放在

if(isset($variable)) 
{ 
    foreach($variable ... 
} 

作品和我在一起。

相关问题