Files
Fuxsto-V3/user/get_my_products.php
2025-10-18 14:46:52 +08:00

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);
?>