is it possible to sort the results by key value inside separate json files? I need to sort the result by “id” value. Sorry if this is a duplicate but I’ve searched entire internet and couldn’t find a solution.
Many thanks for your help.
<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>
Content of multiple json files inside the directory:
{
"id": 0,
"name": "prd-name-0",
"category": "prd-category-0"
}
{
"id": 1,
"name": "prd-name-1",
"category": "prd-category-1"
}
Advertisement
Answer
So this was my solution for anyone who might need this. thanks to @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']);
}