列出目录中的文件并将结果打印为JSON

时间:2013-04-08 02:03:14

标签: php json

很抱歉,如果我的问题是基本的,因为我不熟悉php和json。我创建了一个php文件,列出了我服务器上的目录,并将结果打印为JSON。那么,我该怎么做呢?

以下是我在目录中列出文件的代码:

<?php

$dir = "picture/";

if(is_dir($dir)){

    if($dh = opendir($dir)){
        while(($file = readdir($dh)) != false){

            if($file == "." or $file == ".."){

            } else {
                echo $file."<br />";
                //echo json_encode($file);
            }
        }
    }
}

?>

感谢您的回复......

3 个答案:

答案 0 :(得分:6)

也许尝试这样的事情?

<?php

$dir          = "picture/";
$return_array = array();

if(is_dir($dir)){

    if($dh = opendir($dir)){
        while(($file = readdir($dh)) != false){

            if($file == "." or $file == ".."){

            } else {
                $return_array[] = $file; // Add the file to the array
            }
        }
    }

    echo json_encode($return_array);
}

?>

答案 1 :(得分:5)

我修改了Francisco的代码:

<?php
header('Content-Type: application/json');

$dir          = "./"; //path

$list = array(); //main array

if(is_dir($dir)){
    if($dh = opendir($dir)){
        while(($file = readdir($dh)) != false){

            if($file == "." or $file == ".."){
                //...
            } else { //create object with two fields
                $list3 = array(
                'file' => $file, 
                'size' => filesize($file));
                array_push($list, $list3);
            }
        }
    }

    $return_array = array('files'=> $list);

    echo json_encode($return_array);
}

?>

结果:

{
    "files": [{
            "file": "element1.txt",
            "size": 10
        }, {
            "file": "element2.txt",
            "size": 10
        }
    ]
}

答案 2 :(得分:3)

您可以使用此代码命名数组并设置相同的密钥:

<?php

$dir = "../uploads";
if(is_dir($dir)){
    if($dh = opendir($dir)){
        while(($file = readdir($dh)) != false){
            if($file != "." and $file != ".."){
                $files_array[] = array('file' => $file); // Add the file to the array
            } 
        }
    }
    $return_array =array('name_array' => $files_array);

    exit (json_encode($return_array));
}


?>