PHP – 用多个数组创建一个JSON对象。

我有一个创建目录树的PHP函数,但我不能将结果格式化,得到一个JSON文件,就像这样。

[
  {
    text: 'Parent',
    href: 'parent/',
    nodes: [
      {
        text: 'Child',
        href: 'child/',
        nodes: [
          {
            text: 'Grandchild',
            href: 'grandchild/',
          },
          {
            text: 'Grandchild',
            href: 'grandchild/',
          }
        ]
      },
      {
        text: 'Child',
        href: 'child/',
      }
    ]
  },
  {
    text: 'Parent',
    href: 'parent/',
  },
  {
    text: 'Parent',
    href: 'parent/',
  },
  {
    text: 'Parent',
    href: 'parent/',
  },
  {
    text: 'Parent',
    href: 'parent/',
  },
  {
    text: 'Parent',
    href: 'parent/',
    nodes: [
      {
        text: 'Child',
        href: 'child/',
        nodes: [
          {
            text: 'Grandchild',
            href: 'grandchild/',
          },
          {
            text: 'Grandchild',
            href: 'grandchild/',
          }
        ]
      },
      {
        text: 'Child',
        href: 'child/',
      }
    ]
  }
]

这是我的PHP函数,谁能帮帮我?谅谅

function scandir_rec($root)
{
    $data = [];

    if (!is_dir($root)) {
        return;
    }

    $dirs = scandir($root);

    foreach ($dirs as $dir) {

        if ($dir == '.' || $dir == '..') {
            continue;
        }

        $path = $root . '/' . $dir;  

        $data[] = ['text'=>$dir, 'link'=>urlencode($path)];

        if (is_dir($path)) {

            $data[] = ['nodes' => scandir_rec($path)]; 

        }
    }

    return json_encode($data, JSON_UNESCAPED_SLASHES);
}

// init call
$rootDir = '/var/usr';

scandir_rec($rootDir);

解决方案:

^那些人说什么。

<?php
function scandir_rec($root)
{
    $data = [];

    if (!is_dir($root)) {
        return;
    }

    $dirs = scandir($root);

    foreach ($dirs as $dir) {

        if ($dir == '.' || $dir == '..') {
            continue;
        }

        $path = $root . DIRECTORY_SEPARATOR . $dir;

        if (!is_dir($path)) continue;

        $chunk = ['text' => $dir, 'link' => urlencode($path)];

        $nodes = scandir_rec($path);
        if (!empty($nodes)) $chunk['nodes'] = $nodes;

        $data[] = $chunk;
    }

    return $data;
}

$rootDir = '/var/usr';

json_encode(scandir_rec($rootDir), JSON_UNESCAPED_SLASHES);

给TA打赏
共{{data.count}}人
人已打赏
解决方案

查找所有关联数为零和非零的记录。

2022-5-14 18:00:25

解决方案

Spring JPA中的SQL聚合GROUP BY和COUNT。

2022-5-14 19:21:04

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索