我想在ExtJS树面板中构建一个Json输出列表文件夹结构.该结构应该相当于Json中的这个数组:
Array
(
[text] => .
[children] => Array
(
[0] => Array
(
[text] => files
[children] =>
)
[1] => Array
(
[text] => folder 1
[children] =>
)
[2] => Array
(
[text] => New directory
[children] => array(
[0] => Array
(
[text] => sub_1
[children] => array(
[0] => Array
(
[text] => sub_1_1
[children] =>
)
[1] => Array
(
[text] => sub_1_2
[children] =>
)
)
)
[1] => Array
(
[text] => sub_2
[children] =>
)
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
我做了这个函数,通过PHP手册和示例来显示结构
listFolders('../file_uploads/');
function listFolders($dir){
$dh = scandir($dir);
echo '<ul>';
foreach($dh as $folder){
if($folder != '.' && $folder != '..')
{
if(is_dir($dir.'/'.$folder)){
echo '<li>'.$folder.'</li>';
listFolders($dir.'/'.$folder);
}
}
}
echo '</ul>';
}
Run Code Online (Sandbox Code Playgroud)
这输出结构
我想知道如何将此输出转换为上面的数组(或Json)?
解
print "<pre>";
print_r(listFolders('../file_uploads/'));
function listFolders($dir)
{
$dh = scandir($dir);
$return = array();
foreach ($dh as $folder) {
if ($folder != '.' && $folder != '..') {
if (is_dir($dir . '/' . $folder)) {
$return[] = array(
'text' => $folder,
'children' => listFolders($dir . '/' . $folder)
);
}
}
}
return $return;
}
Run Code Online (Sandbox Code Playgroud)

请尝试以下代码:
function listFolders($dir)
{
$dh = scandir($dir);
$return = array();
foreach ($dh as $folder) {
if ($folder != '.' && $folder != '..') {
if (is_dir($dir . '/' . $folder)) {
$return[] = array($folder => listFolders($dir . '/' . $folder));
} else {
$return[] = $folder;
}
}
}
return $return;
}
Run Code Online (Sandbox Code Playgroud)
似乎为我工作,虽然没有正确测试.
| 归档时间: |
|
| 查看次数: |
5032 次 |
| 最近记录: |