我在下面的代码中为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主题的代码,面包屑显示没有问题,我当然想要解决警告。 谢谢你看看它。
答案 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>';
}
}