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