в настоящее время я использую три отдельных php-функции для массива:
в три разделенных json-файла, так что теперь они:
["folder1","folder2","folder3"] ["folder1/thumb.svg","folder2/thumb.svg","folder3/thumb.svg"] ["blah blah blah","blah blah blah","blah blah blah"]
Это отлично работает для меня, но было бы намного проще, если бы я мог сделать их в один файл json, выглядит так:
[ { "name" : "folder1", "thumbnail" : "folder1/thumb.svg", "text": "blah blah blah" }, { "name" : "folder2", "thumbnail" : "folder2/thumb.svg", "text": "blah blah blah" }, { "name" : "folder3", "thumbnail" : "folder3/thumb.svg", "text": "blah blah blah" }, ]
Есть ли способ сделать это? Благодарю.
Объясни подробней:
Например, я попробовал array("name" => array_map("basename", glob('./folders/*', GLOB_ONLYDIR)),)
и он просто поместил все мои папки в виде гигантского массива под одной записью «name» , "like this {"name":["folder1","folder2","folder3"]}
.
Псевдорешение:
IkoTikashi предоставил решение, хотя и не обязательно, отвечая на вопрос, но может быть полезным для некоторых людей. Я использую его идею, чтобы установить некоторые примеры кодов ниже:
<?php $checkfolder = './path/examples/folders'; $json = []; foreach ( glob($checkfolder . '*', GLOB_ONLYDIR) as $folder) { $filename = $folder . "/description.txt"; if (file_exists($filename)) { $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); } else { $contents = ''; } $json[] = [ 'name' => str_replace($checkfolder, '', $folder), 'thumb' => $folder . '/thumb.svg', 'text' => $contents ]; } json_encode($json); ?>
Конечно, это решение не идеально. Для одного он не предоставляет полезный URL-адрес для эскизов. И что еще более важно, он стирает модульность исходных кодов – пользователи могут использовать три отдельных api для генерации конкретного json для их нужд. Причина реорганизации существующих json-файлов заключается в том, что они могут иметь дополнительную возможность генерировать комбинированные массивы. Это решение, скорее, создало совершенно новую функцию для достижения такой цели – так что, хотя это временное решение, ему не хватает возможности обновления.