Php 如何避免输出foreach错误?

Php 如何避免输出foreach错误?,php,foreach,Php,Foreach,在这方面,它提到: foreach不支持使用“@”抑制错误消息的功能 如何避免输出foreach错误?我不想看到: 警告:为foreach()提供的参数无效 是否有办法在foreach检查变量是否包含数组之前做出if-else判断?: if (is_array($var)) { foreach... } 用(数组)作为变量的前缀,如下所示 foreach( (array) $array_thats_not_an_array as $key => $value ){ echo

在这方面,它提到:

foreach不支持使用“@”抑制错误消息的功能

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

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


是否有办法在foreach检查变量是否包含数组之前做出
if-else
判断?

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

用(数组)作为变量的前缀,如下所示

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

我使用了OZ的建议,但在
is\u数组
测试中出错

但是在要测试的数组的名称之前添加一个
@
,效果很好

    if (is_array((@$errors))){
      foreach ($errors as $error): ?>
        <?php echo $error; ?>
        <br/>
      <?php endforeach;
    }
if(是_数组(@$errors))){
foreach($errors作为$error):?>


这很简单。只要不要为
foreach
提供无效参数。避免错误,而不是抑制错误。您的代码不应该包含任何
@
。我发现使用
if
块更为明确。如果
$array\u不是数组的
将包含对象,那么代码会做什么?资源?如果
$array\thats_not_an_数组
包含错误类型,因为算法编码有错误?错误将被静音,并且更难找到。您完全正确,我不会在这种情况下使用它。但他不想看到错误。“我不想看到警告:为foreach()提供的参数无效。”;)当您通过引用修改数组时,这种方法也不起作用;
foreach((数组)$arr as&$val)$val+=2;
数组的元素不会被更改。你应该检查它是否是数组。如果它是空的,就不会有任何错误,所以你不需要测试它。@Matthieu:避免错误不是完全符合海报的要求吗?是的,这是我的观点,检查数组是否为空是没有用的,因为即使没有测试,也不会有错误这不是一个错误你不需要测试数组是否为空,如果为空就不会有任何错误。空数组上的foreach不会引发错误。我疯了吗?
$var=array();foreach($var as$elem)echo'A';
不会引发任何错误。@Matthieu我的意思是“它工作”,你的意思是“这个代码错了”,对不起。
    if (is_array((@$errors))){
      foreach ($errors as $error): ?>
        <?php echo $error; ?>
        <br/>
      <?php endforeach;
    }