在breadcrumbs函数中为foreach()提供的参数无效

时间:2016-12-05 08:51:44

标签: drupal foreach invalid-argument

我在下面的代码中为foreach()提供了一个无效的参数,我无法弄清楚为什么..

function empuls_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb))
      {
         foreach($breadcrumb as $k => $v) {
             foreach ($v as $key=>$value){
           $breadcrumb[$k][$key]='<span>'.$value.'</span>';
        }
        }
   return '<div class="breadcrumb">'. implode(' ', $breadcrumb['breadcrumb']) .'</div>';
  }
 }

这是一个用于Drupal主题的代码,面包屑显示没有问题,我当然想要解决警告。 谢谢你看看它。

2 个答案:

答案 0 :(得分:0)

我认为$breadcrumb不可迭代。而不是!empty检查它是否是is_array()(假设你期望一个数组,也没有其他可迭代的PHP对象)

您应该使用特定错误更新您的问题。如果for数组不包含数组,则可能是导致问题的内部$breadcrumb,因为您没有在内部进行类型检查。

如果可以使用,我建议您尝试dpm($breadcrumb)查看此功能正在接收的变量的结构。

答案 1 :(得分:0)

您必须在使用之前测试变量:

function empuls_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb) && (is_array($breadcrumb) || is_object($breadcrumb))){
         foreach($breadcrumb as $k => $v) {
             if(is_array($v) || is_object($v)){
               foreach ($v as $key=>$value){
                    $breadcrumb[$k][$key]='<span>'.$value.'</span>';
               }
            }
        }
   return '<div class="breadcrumb">'. implode(' ', $breadcrumb['breadcrumb']) .'</div>';
  }
 }