91 lines
3.0 KiB
PHP
91 lines
3.0 KiB
PHP
<?php
|
|
include './sc.php';
|
|
//sleep(1);
|
|
// 设置要读取的目录路径
|
|
$directory = './me/' . $user . '/' . $pass . '/products';
|
|
|
|
// 创建一个空数组来保存文件名和内容
|
|
$result = [];
|
|
|
|
// 确保目录存在并且是可读的
|
|
if (is_dir($directory)) {
|
|
// 打开目录
|
|
if ($dh = opendir($directory)) {
|
|
// 循环读取目录中的文件
|
|
while (($file = readdir($dh)) !== false) {
|
|
// 跳过目录中的 . 和 .. 以及其他无效的文件
|
|
if ($file == '.' || $file == '..') {
|
|
continue;
|
|
}
|
|
|
|
// 检查文件是否以 .json 结尾
|
|
if (pathinfo($file, PATHINFO_EXTENSION) === 'json') {
|
|
// 获取文件的路径
|
|
$filePath = $directory . '/' . $file;
|
|
|
|
// 读取文件内容
|
|
$content = file_get_contents($filePath);
|
|
|
|
// 检查文件内容是否有效
|
|
if ($content === false || empty($content)) {
|
|
continue;
|
|
}
|
|
|
|
// 去掉文件的扩展名 .json 作为键
|
|
$fileNameWithoutExtension = pathinfo($file, PATHINFO_FILENAME);
|
|
|
|
// 确保文件名不为空
|
|
if (!empty($fileNameWithoutExtension)) {
|
|
// 将文件内容解码为关联数组
|
|
$jsonData = json_decode($content, true);
|
|
|
|
// 将文件名作为额外字段添加进解码后的 JSON 数据
|
|
if (is_array($jsonData)) {
|
|
$jsonData['_fileName'] = $fileNameWithoutExtension;
|
|
$result[] = $jsonData; // 存储解码后的数据
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 关闭目录
|
|
closedir($dh);
|
|
}
|
|
}
|
|
|
|
// 自定义排序函数,先按 `name`,再按 `dqtime` 排序
|
|
usort($result, function($a, $b) {
|
|
// 按 name 排序,如果 name 相同,再按 dqtime 排序
|
|
$nameA = isset($a['name']) ? $a['name'] : '';
|
|
$nameB = isset($b['name']) ? $b['name'] : '';
|
|
$dqtimeA = isset($a['dqtime']) ? $a['dqtime'] : '';
|
|
$dqtimeB = isset($b['dqtime']) ? $b['dqtime'] : '';
|
|
|
|
// 先按 name 字段比较
|
|
if ($nameA == $nameB) {
|
|
// name 相同的情况下按 dqtime 比较
|
|
return strcmp($dqtimeA, $dqtimeB);
|
|
}
|
|
return strcmp($nameA, $nameB);
|
|
});
|
|
|
|
// 将排序后的结果转换为关联数组,文件名为键
|
|
$sortedResult = [];
|
|
foreach ($result as $jsonData) {
|
|
if (isset($jsonData['_fileName'])) {
|
|
$fileNameWithoutExtension = $jsonData['_fileName'];
|
|
unset($jsonData['_fileName']); // 删除临时的文件名字段
|
|
$sortedResult[$fileNameWithoutExtension] = $jsonData;
|
|
}
|
|
}
|
|
|
|
// 检查是否有结果,如果没有 .json 文件,则输出 null
|
|
if (empty($sortedResult)) {
|
|
$sortedResult = null;
|
|
}
|
|
|
|
// 将结果数组输出为 JSON 格式
|
|
header('Content-Type: application/json');
|
|
echo json_encode($sortedResult, JSON_PRETTY_PRINT);
|
|
|
|
?>
|