循环数组的数组



在PHP中,如何在不知道数组是否为数组的情况下循环数组?

举个例子更好:

Array
(
    [0] => Array
        (
            [0] => big
            [1] => small
        )
    [1] => Array
        (
            [0] => big
            [1] => tiny
        )
    [2] => Array
        (
            [0] => a
            [1] => b
            [2] => c
            [3] => d
            [4] => e
            [5] => f
        )
    [3] => row
    [4] => cols
    [5] => blablabla
    [6] => Array
        (
            [0] => asd
            [1] => qwe
        )
}

知道吗?谢谢

选择哪种方法取决于您想对数据做什么。

array_walk_recursive[docs]允许递归遍历数组。

您可以使用is_array来检查该元素是否是数组,如果是,则递归循环。

您可以使用is_array来检查某个东西是否是数组,和/或使用is_object来检查它是否可以在foreach:中使用

foreach ($arr as $val)
{
    if (is_array($val) || is_object($val)) 
    {
        foreach ($val as $subval)
        {
            echo $subval;
        }
    }
    else
    {
        echo $val;
    }
}

另一种选择是使用RecursiveIteratorIterator:

$it = new RecursiveIteratorIterator(
           new RecursiveArrayIterator($arr),
           RecursiveIteratorIterator::SELF_FIRST);
foreach($it as $value)
{
   # ... (each value)
}

递归迭代器在深度上适用于多个级别。

foreach( $array as $value ) {
    if( is_array( $value ) ) {
        foreach( $value as $innerValue ) {
            // do something
        }
    }
}

如果您知道它将是最多2个级别的嵌套数组,那么这将起作用。如果您不知道嵌套的级别,则需要使用递归。或者可以使用array_walk_recurative 等函数

$big_array = array(...);
function loopy($array)
{
    foreach($array as $element)
    {
        if(is_array($element))
        {
            // Keep looping -- IS AN ARRAY--
            loopy($element);
        }
        else
        {
            // Do something for this element --NOT AN ARRAY--
        }
    }
}
loopy();

相关内容

  • 没有找到相关文章

最新更新