0

我有一些标记需要根据数组进行相应的循环,如果它是多维的,我必须以一种方式循环它,否则我不必循环它。

现在我通过做一个大的'ol if/else来解决这个问题,如果它不是多维的,则打印“静态”标记,如果是则循环标记。这很难看,让我使用 2 个相同的标记块。

if (count($data_array) == count($data_array, COUNT_RECURSIVE)) 
    { block of html }
else
{ looped-almost same block of html }

任何人对此都有更好的解决方案,我很乐意实施它:)

编辑:要清除,我有一个具有循环或不循环属性的表。

foreach($i as $b => $v)
$v['item']

如果$v['item']数组是多维的,如果数组不是多维的,则遍历表的位置我只需简单地打印表$i['item']

这让我使用 2 个相同的 html-blocks 唯一的区别是 $v / $i

4

2 回答 2

2

更新答案后,我认为只需检查$array['item']withisset即可解决您的问题。

例子:

if(isset($array['item'])) {
    // Do non-recursive stuff
}
else {
    // Do more checks and recursive stuff
}

老答案:

你有没有想过is_array

for($yourArray as $key => $value) {
    if (is_array($value)) {
        // Do multidimensional stuff
    }
    else {
        // Do normal stuff
    }
}
于 2012-10-18T08:41:42.687 回答
0

通过这样做解决了这个问题:

  if(is_array($v))
    {
        $table_array = $v;
    }
    else
    {
        $table_array = $i;
        $single = true;
    }

在 foreach 循环内,在循环结束时

if(isset($single))
    break;

不是那么热....但至少我不复制 html :)

于 2012-10-18T09:27:29.247 回答