Получение Json из файлов и папок

85
18 июня 2019, 07:20

В папке music на хостинге лежал папки типа

Папка № 1
Папка № 2
...
Папка № N

В каждой папке свои аудио

Аудио № 1
Аудио № 2
...
Аудио № N

Как-то можно получить JSON файл из этих папок и файлов в виде

{
  "music": [
    {
      "id": "1",
      "Папка": "Папка № 1",
      "Аудио": "Аудио № 1",
      "url": "mysite.ru/music/Папка № 1/Аудио № 1.mp3"
    },
    {
      "id": "2",
      "Папка": "Папка № 1",
      "Аудио": "Аудио № 2",
      "url": "mysite.ru/music/Папка № 1/Аудио № 2.mp3"
    },
    {
      "id": "3",
      "Папка": "Папка № 1",
      "Аудио": "Аудио № 3",
      "url": "mysite.ru/music/Папка № 1/Аудио № 3.mp3"
    },
    {
      "id": "4",
      "Папка": "Папка № 2",
      "Аудио": "Аудио № 1",
      "url": "mysite.ru/music/Папка № 2/Аудио № 1.mp3"
    },
    {
      "id": "5",
      "Папка": "Папка № 2",
      "Аудио": "Аудио № 2",
      "url": "mysite.ru/music/Папка № 2/Аудио № 2.mp3"
    },
    {
      "id": "6",
      "Папка": "Папка № 2",
      "Аудио": "Аудио № 3",
      "url": "mysite.ru/music/Папка № 2/Аудио № 3.mp3"
    },
    {
      "id": "7",
      "Папка": "Папка № 3",
      "Аудио": "Аудио № 1",
      "url": "mysite.ru/music/Папка № 3/Аудио № 1.mp3"
    },
    {
      "id": "8",
      "Папка": "Папка № 3",
      "Аудио": "Аудио № 2",
      "url": "mysite.ru/music/Папка № 3/Аудио № 2.mp3"
    },
    {
      "id": "9",
      "Папка": "Папка № 3",
      "Аудио": "Аудио № 3",
      "url": "mysite.ru/music/Папка № 3/Аудио № 3.mp3"
    }
  ]
}

Результат

"2014": {
  "id": 2014,
  "folder": "music/Певец_1",
  "audio": "..",
  "url": "https://site.ru/music/Певец_1/.."
},
"2015": {
  "id": 2015,
  "folder": "music/Певец_1",
  "audio": ".",
  "url": "https://site.ru/music/Певец_1/."
},
"2016": {
  "id": 2016,
  "folder": "music/Певец_1",
  "audio": ".",
  "url": "https://site.ru/music/Певец_1/Музыка № 1.mp3"
}
Answer 1

Вот примерно так можете сделать. А подробно о методах что есть здесь в коде можете прочитать тут.

$mp3_arr = array();
//$somePath ваща родительская директория
$somePath = 'Song';
$dirs = glob($somePath . '/*' , GLOB_ONLYDIR);
var_dump($dirs);
$id = 1;
foreach($dirs as $dir){
    $results_array = array();
    if (is_dir($dir))
    {
        if ($handle = opendir($dir))
        {
            while(($file = readdir($handle)) !== FALSE)
            {
                if ($file!="."&&$file!=".."){
                    $mp3_arr['music'][$id]["Папка"] = $dir;
                    $mp3_arr['music'][$id]["Аудио"] = $file;
                    $mp3_arr['music'][$id]["url"] = "mysite.ru/music/".$dir."/".$file;
                    $id++;
                }
            }
            closedir($handle);
        }
    }
}
echo '<pre>';
var_dump($mp3_arr);
$mp3_json = json_encode($mp3_arr);

Здесь используется readdir. И он первые две записи возвращает . и ..

1. `.`  - это запись каталога для текущего каталога
2. `..` - является каталогом для текущего каталога на один уровень выше в иерархии

Или вот второй вариант с использованием glob для поиска песен в папках.

$mp3_arr = array();
//$somePath ваша родительская директория
$somePath = 'Song';
$dirs = glob($somePath . '/*' , GLOB_ONLYDIR);
var_dump($dirs);
$id = 1;
foreach($dirs as $dir){
    $results_array = array();
    if (is_dir($dir))
    {
        if ($handle = opendir($dir))
        {
            foreach(glob($dir.'/*.mp3') as $file){
                $mp3_arr['music'][$id]["Папка"] = $dir;
                $mp3_arr['music'][$id]["Аудио"] = $file;
                $mp3_arr['music'][$id]["url"] = "mysite.ru/music/".$dir."/".$file;
                $id++;
            }
            closedir($handle);
        }
    }
}
echo '<pre>';
var_dump($mp3_arr);
$mp3_json = json_encode($mp3_arr);
READ ALSO
В чем преимущества ORM?

В чем преимущества ORM?

Что дает мне использование Doctrine и Eloquent кроме скорости разработки(помойму спорный аргумент) и всеядности к субд(здесь конечно да)И как обстаят...

75
password_verify неправильно работает

password_verify неправильно работает

Перелопатил кучу материала и других вопросов, но ответа так и не нашелЕсть вот такой вот код

70
Как сократить код (таблица умножения на php)?

Как сократить код (таблица умножения на php)?

В общем, начал изучать php и в ходе изучения решил поставить перед собой задачу, вывести на экран таблицу умноженияСоставил такой код:

69
Вывод данных из Базы данных tpl

Вывод данных из Базы данных tpl

Решил я написать модуль для одного движка (DLE) Но столкнулся с проблемой, можно ли выводить информацию из tpl файлов с помощью php? Если да, то как...

92