php一个三维数组foreach如何遍历

<?php
header('content-type:text/html;charset=utf-8');

//有以下结构的数组

$array1 = array(
'files' => array(
'name' => array(
0 => 'a.gif',
1 => 'b.png',
2 => 'c.txt',
3 => 'd.css',
),
'tmp_name' => array(
0 => 'c:\windows\temp\php12.tmp',
1 => 'c:\windows\temp\php13.tmp',
2 => 'c:\windows\temp\php14.tmp',
3 => 'c:\windows\temp\php15.tmp',
),
'size' => array(
0 => 526632,
1 => 8222,
2 => 2001,
3 => 36 ,
),
'error' => array(
0 => 0,
1 => 0,
2 => 0,
3 => 0,
),
'type' => array(
0 => 'image/gif',
1 => 'image/png',
2 => 'text/plain',
3 => 'text/css',
),
)

);

//请封装函数buildInfo完成将上述函数转换成如下结构的功能.

$array2 = array(
0 => array(
'name' => 'a.gif',
'type' => 'image/gif',
'error' => 0,
'tmp_name' => 'c:\windows\temp\php12.tmp',
'size' => 526632,
'extension' => 'gif',
),
1 => array(
'name' => 'b.png',
'type' => 'image/png',
'error' => '0',
'tmp_name' => 'c:\windows\temp\php12.tmp',
'size' => 8222,
'extension' => 'png',
),
2 => array(
'name' => 'c.txt',
'type' => 'text/plain',
'error' => 0,
'tmp_name' => 'c:\windows\temp\php14.tmp',
'size' => 2001,
'extension' => 'txt',
),
3 => array(
'name' => 'd.css',
'type' => 'text/css',
'error' => 0,
'tmp_name' => 'c:\windows\temp\php15.tmp',
'size' => 36,
'extension' => 'css',
),

);

数组遍历就用foreach了。三维只是遍历三次而已。原理是一样。比如

$arr = array(array(array(1)));
foreach ($arr as $key => $value) {
    foreach ($value as $k => $v) {
        foreach ($v as $k3 => $v3) {
            var_dump($v3);
        }
    }
}
//最后输出的就是最里面的1了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-24
$array1 = array(
'files' => array(
'name' => array(
0 => 'a.gif',
1 => 'b.png',
2 => 'c.txt',
3 => 'd.css',
),
'tmp_name' => array(
0 => 'c:\windows\temp\php12.tmp',
1 => 'c:\windows\temp\php13.tmp',
2 => 'c:\windows\temp\php14.tmp',
3 => 'c:\windows\temp\php15.tmp',
),
'size' => array(
0 => 526632,
1 => 8222,
2 => 2001,
3 => 36 ,
),
'error' => array(
0 => 0,
1 => 0,
2 => 0,
3 => 0,
),
'type' => array(
0 => 'image/gif',
1 => 'image/png',
2 => 'text/plain',
3 => 'text/css',
),
)

);
$array2=array();
foreach($array1 as $key=>$value){
for($i=0;$i<sizeof($value['name']);$i++){
$array2[]=array(
'name'=>$value['name'][$i],
'type'=>$value['type'][$i],
'error'=>$value['error'][$i],
'tmp_name'=>$value['tmp_name'][$i],
'size'=>$value['size'][$i],
'extension'=>trim(strrchr($value['name'][$i],'.'),'.')
);
}
}
print_r($array2);追问

你好 前辈 目前trim()还有strrchr()这两个函数还没有接触到 假如 我只用循环加遍历 或者 函数的递归 应该怎么来呢

追答

这样还不行?已经完全按照你的要求来做了的.

本回答被提问者和网友采纳
相似回答