如何避免输出foreach错误?

问题描述:

在这个article,它提到:如何避免输出foreach错误?

的foreach不支持使用抑制错误信息的能力 '@'。

如何避免输出foreach错误?我不希望看到:

警告:提供的foreach无效参数()

有没有一种方法,使一个if else判断?

+4

很简单。只是不要向'foreach'提供无效的参数。避免错误,而不是压制它们。你的代码根本不应该包含任何'@'* *。 – Tomalak 2011-06-04 23:04:22

的foreach检查之前,如果变量包含数组:

if (is_array($var)) 
{ 
    foreach... 
} 
+0

你不需要测试数组是否为空,如果是的话不会有任何错误。 – 2011-06-04 23:20:36

+0

@Matthieu,试试吧。 – 2011-06-04 23:40:23

+1

好的foreach在一个空的数组上不会引发错误。我疯了吗 ? '$ var = array(); ($ var为$ elem)echo'A';'不会引发任何错误。 – 2011-06-04 23:50:54

前缀与(阵列)的变量是这样的。

foreach((array) $array_thats_not_an_array as $key => $value){ 
    echo $key . ' ' . $value; 
} 
+1

我发现它更明确有一个“if”块。 – 2011-06-04 23:12:05

+0

如果'$ array_thats_not_an_array'将包含Object,你的代码会做什么?资源?如果'$ array_thats_not_an_array'包含错误的类型会怎么样?因为算法编码时有错误?错误将被静音,并且将更难以找到。 – 2011-06-05 06:47:37

+1

你绝对正确,我不会在这种情况下使用它。但他不想看到一个错误。 “我不希望看到警告:为foreach()提供了无效参数”;) – 2011-06-13 17:29:40

if(!empty($array)) { 
    foreach($array as $a) { 
    // do something 
    } 
} 
+0

你应该确认它是一个数组。如果它是空的,不会有任何错误,所以你不需要测试它。 – 2011-06-04 23:14:21

+0

@Matthieu:是不是完全避免了海报所要求的错误? – Tom 2011-06-04 23:16:05

+0

是的,这是我的观点,检查数组是否为空是无用的,因为即使没有你的测试,也不会有错误 – 2011-06-04 23:32:00