PHP:将目录文件数组转为带URL键的关联数组并输出JSON
问题:修改PHP脚本生成带完整URL的JSON数组
我有一段PHP脚本,用于返回指定目录下的图片(或文件),当前最终输出为仅包含文件名的JSON数组。
现有代码:
<?php $files = array(); $dir = opendir('/folderpath'); while ($file = readdir($dir)) { if ($file == '.' || $file == '..') { continue; } $files[] = $file; } header('Content-type: application/json'); echo json_encode($files);
当前输出的JSON:
["1.png","2.jpg","4.jpg","3.png"]
需求:为每个图片拼接完整URL,将每个元素转为以"url"为键、完整URL为值的关联数组,最终得到如下格式的JSON输出:
[ {"url":"https://s3-us-west-2.amazonaws.com/appsdeveloperblog.com/images/cats/cat-1.png"}, {"url":"https://s3-us-west-2.amazonaws.com/appsdeveloperblog.com/images/cats/cat-2.jpg"}, {"url":"https://s3-us-west-2.amazonaws.com/appsdeveloperblog.com/images/cats/cat-3.jpg"}, {"url":"https://s3-us-west-2.amazonaws.com/appsdeveloperblog.com/images/cats/cat-4.jpg"}, {"url":"https://s3-us-west-2.amazonaws.com/appsdeveloperblog.com/images/cats/cat-5.jpg"}, {"url":"https://s3-us-west-2.amazonaws.com/appsdeveloperblog.com/images/cats/cat-6.jpg"} ]
解决方案
修改后的代码如下:
<?php $files = array(); // 定义URL前缀,根据实际场景调整 $baseUrl = 'https://s3-us-west-2.amazonaws.com/appsdeveloperblog.com/images/cats/'; $dir = opendir('/folderpath'); while ($file = readdir($dir)) { if ($file == '.' || $file == '..') { continue; } // 组装带url键的关联数组 $files[] = [ 'url' => $baseUrl . $file ]; } header('Content-type: application/json'); // JSON_PRETTY_PRINT可选,用于格式化输出提升可读性 echo json_encode($files, JSON_PRETTY_PRINT);
关键改动说明:
- 新增
$baseUrl变量统一管理URL前缀,后续调整路径只需修改此处 - 将原本直接存入文件名的逻辑,改为生成包含
url键的关联数组,值为前缀与文件名拼接后的完整URL - 可选启用
JSON_PRETTY_PRINT参数,让输出的JSON自动换行格式化,便于查看
内容的提问来源于stack exchange,提问作者winfred adrah
相关产品推荐
相关产品推荐

