如何从对象创建像表一样的filetree?

时间:2014-05-27 17:51:41

标签: php html file tree html-table

我做my first post时有点困惑。这次我会更具体。

我正在尝试从对象(From a php-transmission project)创建一个“类似filetree”的表。在我的表中,我将有文件名,大小和状态(完成与否)。在“名称”中,我们可以看到某种“文件的完整路径”字符串。

Thomas帮助我制作了一系列名字,但我忘了告诉他我正试图从一个物体上抓住它......

以下是我的代码示例:

<?php
$transmission = new Transmission();
$transfer= $transmission->get('26ec249e2669388ff359923702ac0f5c7687d1be');  
$files = $transfer->getFiles();


foreach($files AS $file) 
    {
    var_dump($file->getName()); // RootFolder/Folder1/File1.jpg
    var_dump($file->getSize()); // 10383488
    var_dump($file->isDone());  // True or False

    print_r($file);
    }

输出:

string(59) "RootFolder/Folder1/File1.jpg" 
int(13324) 
bool(true) 
Transmission\Model\File Object
(
    [name:protected] => RootFolder/Folder1/File1.jpg
    [size:protected] => 13324
    [completed:protected] => 13324
    [client:protected] => 
)

$文件将输出:

Array
(
[0] => Transmission\Model\File Object
    (
        [name:protected] => RootFolder/Folder1/File1.jpg
        [size:protected] => 13324
        [completed:protected] => 13324
        [client:protected] => 
    )

[1] => Transmission\Model\File Object
    (
        [name:protected] => RootFolder/Folder1/File2.mp3
        [size:protected] => 10383488
        [completed:protected] => 10383488
        [client:protected] => 
    )
[2] ...
)

我看到了来自www.abeautifulsite.net的精彩作品,但它基于is_dir()命令。

我想要做的是一个带有可折叠部分(在文件夹上)的html表和文件行上的文件信息(名称,大小和状态)。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我找到了问题第一部分的答案。这是我的代码(基于我的旧帖子):

function createArray ($filesObject)
  {
  $result = array();
  foreach($filesObject AS $file) 
    {
    $prev = &$result;
    $s = strtok($file->getName(), '/');

     while (($next = strtok('/')) !== false) 
        {
        if (!isset($prev[$s])) {
        $prev[$s] = array();
        }

        $prev = &$prev[$s];
        $s = $next;
        }

    $prev[] = $s.'|'.$file->getSize().'|'.$file->isDone(); // Delimiter is '|'
    unset($prev);
    }
  return $result;
  }

第二部分包括在某种文件树样式的html表中显示这个数组。 如果有人有想法?