PHP从多个json文件中的键值排序结果
Posted
技术标签:
【中文标题】PHP从多个json文件中的键值排序结果【英文标题】:PHP Sort results from key values inside multiple json files 【发布时间】:2022-01-11 15:41:12 【问题描述】:是否可以在单独的 json 文件中按键值对结果进行排序? 我需要按“id”值对结果进行排序。 抱歉,如果这是重复的,但我已经搜索了整个互联网并找不到解决方案。
非常感谢您的帮助。
<div class="container grid grid-cols-2 gap-6 tablet:grid-cols-3 desktop:grid-cols-6">
<?php
$i = 0;
$dir = (new DirectoryIterator(__DATA_PAGES_PATH__ . 'products/content/' . $lang));
foreach ($dir as $productsdata)
if ($productsdata->isDot()) continue;
$productdata = json_decode(file_get_contents(__DATA_PAGES_PATH__ . 'products/content/' . $lang . "/" . $productsdata));
if ($productdata->popular > 0)
?>
<?php echo $productdata->id ?>
<?php
;
if (++$i == 6) break;
?>
</div>
目录内多个json文件内容:
"id": 0,
"name": "prd-name-0",
"category": "prd-category-0"
"id": 1,
"name": "prd-name-1",
"category": "prd-category-1"
【问题讨论】:
如果您直接从每个文件中输出内容,则不会。您需要先将所有这些数据放入一个数组中,然后对该数组进行排序,然后遍历排序后的数组以创建输出。 非常感谢。我宁愿创建一个单独的模式 json 来代替。 【参考方案1】:所以这是我为任何可能需要它的人提供的解决方案。感谢@CBroe
function sortkey($folder, $key)
$GLOBALS['files'] = glob(__data__ . $folder . '/' . $GLOBALS['lang'] . '/*.json');
$GLOBALS['sort'] = [];
foreach ($GLOBALS['files'] as $GLOBALS['file'])
$GLOBALS['thisData'] = file_get_contents($GLOBALS['file']);
$GLOBALS['thisDataArr'] = json_decode($GLOBALS['thisData']);
if (isset($GLOBALS['thisDataArr']->$key))
$GLOBALS['sort'][$GLOBALS['thisDataArr']->$key] = basename(str_replace('.json', '', $GLOBALS['file']));
ksort($GLOBALS['sort']);
// var_dump($GLOBALS['sort']);
【讨论】:
以上是关于PHP从多个json文件中的键值排序结果的主要内容,如果未能解决你的问题,请参考以下文章
如何将多个键值条目的 JSON 对象反序列化为 Rust 中的自定义结构