Php Array(很少)foreach获取值

时间:2012-07-28 16:05:25

标签: php arrays

在php中执行简单的ftp查看器:

我有一个函数返回带有file_name的数组。

我(在我的功能结束时)print_r($files);,这是出局

Array ( [0] => task_manager.zip [1] => 1086237 [2] => zip ) Array ( [0] => asd.zip [1] => 1086237 [2] => zip [3] => fonts/some_file.zip [4] => 959224 [5] => zip )

正如你可以看到我得到阵列,这是完美的但我想得到file_name,file_size& file_extension我失败了:

p.s - ListFiles - 是我的函数名,('fonts/') - 我找到文件的文件夹

foreach (ListFiles('fonts/') as $key=>$file){
    echo 'file_name = '.$file."<br/>";
}

我得到了:

file_name = task_manager.zip
file_name = 1086237
file_name = zip
file_name = fonts/some_file.zip
file_name = 959224
file_name = zip

这实际上是错误的,因为我想在一行中做到这一点,如下所示:

我想要做什么(接近完美的方式)做这样的事情:

在php中:

foreach (ListFiles('fonts/') as $key=>$file){
    echo 'file_name = '.$file[0].'file_size = '.$file[1].'file_ext = '.$file[2].'<br/>';
}

in html:

file_name = task_manager.zip, file_size = 1086237, file_ext = zip
file_name = some_file.zip, file_size = 959224, file_ext = zip

更新:我的ListFiles功能

function ListFiles($dir) {
    if($dh = opendir($dir)) {

                //This data I get from form
        $allowedExts = array();
        if(isset($_POST['exts'])){
            for ( $i=0; $i < count($_POST['exts']); $i++ ){
                array_push($allowedExts, $_POST['exts'][$i]);
            }
        } // end of this data

        $files = Array();
        $inner_files = Array();
        while($file = readdir($dh)) {
            if($file != "." && $file != ".." && $file[0] != '.') {
                if(is_dir($dir . "/" . $file)) {
                    $inner_files = ListFiles($dir . "" . $file);
                    if(is_array($inner_files))
                        $files = array_merge($files, $inner_files); 
                } else {
                    if(in_array(end(explode('.', $file)), $allowedExts)){
                        $filesize = filesize('./'.$dir.$file);
                        $userfile_extn = substr($file, strrpos($file, '.')+1);
                        array_push($files, $dir . "/" . $file, $filesize, $userfile_extn);

                    }                
                }
            }
        }

        closedir($dh);
        return $files;
    }
}

1 个答案:

答案 0 :(得分:0)

最简单的方法:

$files = ListFiles('fonts/');
for ($i = 0; $i < count($files); $i += 3){
    echo 'file_name = '.$files[$i].'file_size = '.$files[$i+1].'file_ext = '.$files[$i+2].'<br/>';
}

更好的方式:

http://pastie.org/4567820