Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何循环通过这个复杂的关联数组?_Php_Codeigniter - Fatal编程技术网

Php 如何循环通过这个复杂的关联数组?

Php 如何循环通过这个复杂的关联数组?,php,codeigniter,Php,Codeigniter,我有一个名为$reports的数组。格式如下。当我试图查看在我的视图文件中使用print\r($reports)时 Array ( [x] => Array ( [A] => Array ( [0] => Channel1 - 1 Stations [1] => n [2] => 1 [3]

我有一个名为$reports的数组。格式如下。当我试图查看在我的视图文件中使用print\r($reports)时

Array
(
[x] => Array
    (
        [A] => Array
            (
                [0] => Channel1 - 1 Stations
                [1] => n
                [2] => 1
                [3] => 2012-11-02 11:30:00
                [4] => 60
                [5] => 20
                [6] => 0
                [7] => 18
                [8] => 602
                [9] => 540
                [10] => Array
                    (
                        [0] => Array
                            (
                                [1] => Whirlpool Ice Magic 30.sec Tamil
                                [2] => 0
                                [3] => 20
                                [4] => 0
                                [5] => 18
                                [6] => 602
                                [7] => 540
                            )

                    )

            )

       )
)
我刚才在这里展示了一个x数组,我有很多数组,我想循环遍历它们。谁能告诉我怎么做吗。


foreach($reports as $key1=>$val1)
{
    foreach($val1 as $key2=>$val2)
    {
        foreach($val2 as $key3=>$val3)
        {
            echo $val;
        }
    }
}
类似于:

array_walk_recursive($reports,
    create_function('$e','if (is_scalar($e)) echo sprintf("%s\n",$e);'));
通用示例

 // your data
 $a = array(
     'a',
     'b',
     array (
         'c',
         'd',
         array ('e','f')
     )
 );

 // your recursive function
 function echo_row($x) {
     if (is_array($x)) {
         // if is an array calls the recursive function over the new array
         foreach ($x as $e) {
             echo_row($e);
         }
     } else {
         // prints a row, change to your table html
         echo $x . "<br>";
     }
 }

// execute the function 
echo_row($a);

// results
a
b
c
d
e
f
//您的数据
$a=数组(
“a”,
“b”,
排列(
"c",,
“d”,
数组('e','f')
)
);
//你的递归函数
函数echo_行($x){
if(is_数组($x)){
//如果是数组,则在新数组上调用递归函数
外汇($x为$e){
echo_row($e);
}
}否则{
//打印一行,更改为表格html
echo$x.“
”; } } //执行函数 回音街($a); //结果 A. B C D E F
类似的东西

foreach($reports as $report) {
    foreach($report as $element) {
        //$element[3] would give you 2012-11-02 11:30:00
        if(is_array($element) {
            foreach($element as $x) {
                foreach($x as $y) {
                    //$y[1] would give you Whirlpool Ice Magic 30.sec Tamil
                }
            }
        }
    }
}

我创建了一个php函数,将嵌套数组提取到新的基本数组中:

    function extractArray($nested_array,&$new_array)
    {
        foreach($nested_array as $key => $val)
        {
            if(is_array($val)) extractArray($val,$new_array);
            else $new_array[$key] = $val;
        }
    }
$ary=数组
(“x”=>数组(
“A”=>数组
(
0=>“信道1-1站”,
1=>“n”,
2 => 1,
3 => "2012-11-02 11:30:00",
4 => 60,
5 => 20,
6 => 0,
7 => 18,
8 => 602,
9 => 540,
10=>数组
(
0=>数组
(
1=>“惠而浦冰魔法30秒泰米尔”,
2 => 0,
3 => 20,
4 => 0,
5 => 18,
6 => 602,
7 => 540,
)
)
),
));
函数fetchArray($ary,$level=0)
{
if(is_数组($ary))
{
$pad=$level*25;
foreach($ary作为$key=>$val)
{
if(is_数组($val))
{
回显“$key.=Array”;
$level++;
fetchArray($val,$level);
}
其他的
{
回显“$key.”=>“$val.”;
}
}
}
}
fetchArray($ary,0);

试试这个..

你的预期结果是什么我想在一个表格中打印所有的......如果一个条目是数组,使用
foreach
循环和
递归的组合。实现起来很简单,但不是性能最好的方法。我尝试过使用foreach,但无法获得它………正如所说:深度遍历需要递归。
    function extractArray($nested_array,&$new_array)
    {
        foreach($nested_array as $key => $val)
        {
            if(is_array($val)) extractArray($val,$new_array);
            else $new_array[$key] = $val;
        }
    }
$ary = array
        ("x" => array(
            "A" => array
                (
                0 => "Channel1 - 1 Stations",
                1 => "n",
                2 => 1,
                3 => "2012-11-02 11:30:00",
                4 => 60,
                5 => 20,
                6 => 0,
                7 => 18,
                8 => 602,
                9 => 540,
                10 => array
                    (
                    0 => array
                        (
                        1 => "Whirlpool Ice Magic 30.sec Tamil",
                        2 => 0,
                        3 => 20,
                        4 => 0,
                        5 => 18,
                        6 => 602,
                        7 => 540,
                    )
                )
            ),
            ));

    function fetchArray($ary, $level = 0)
    {
        if (is_array($ary))
        {
            $pad = $level * 25;

            foreach ($ary as $key => $val)
            {
                if (is_array($val))
                {
                    echo "<div style='padding-left:" . $pad . "px'>" . $key . " = Array</div>";

                    $level++;
                    fetchArray($val, $level);
                }
                else
                {
                    echo "<div style='padding-left:" . $pad . "px'>" . $key . " => " . $val . "</div>";
                }
            }
        }
    }

    fetchArray($ary, 0);