首页 > 解决方案 > 使用 PHP 按多个键对 JSON 进行排序

问题描述

我一直在这个网站上搜索对我的 JSON 数据进行排序的最佳方式。不幸的是,我只能找到显示基本 JSON 数据集排序的答案。通常,这些答案仅按一条信息排序。

我希望能够对更复杂的 JSON 数据集进行排序,并通过多个键/列进行排序,其中第一个排序键优先于第二个排序键,依此类推。

{
  'files' : [ 
    {
      'type a' : [
        {
          '20200101' : [
            {
              'title' : *some_title*
            },
            {
              'title' : *some_title*
            }
          ]
        },
        {
          '20200102' : [
            {
              'title' : *some_title*
            },
            {
              'title' : *some_title*
            }
          ]
        }
      ],
      'type b' : [
        {
          '20200101' : [
            {
              'title' : *some_title*
            },
            {
              'title' : *some_title*
            }
          ],
          '20200102' : [
            {
              'title' : *some_title*
            },
            {
              'title' : *some_title*
            }
          ]
        }
      ]
    }
  ]
}

我想以多种方式对上述 JSON 数组进行排序。

在过去,我一直在使用array_multisort()更基本的 JSON 数据,类似于:

$json[$n] = array(
          'file':*sample*,
          'date':*sample*,
          'title':*sample*
        );

array_multisort(
    array_column($json, 'file'), SORT_ASC,
    array_column($json, 'date'), SORT_ASC, 
    array_column($json, 'title'), SORT_ASC, 
    $json
);

我相信(如果我错了,请纠正我)将我的数据存储在类似于问题顶部的 JSON 中会更好。这可能会提供一些性能提升,如果没有,它至少会是最佳实践。

我怎样才能最好地按多个键或值对 JSON 数据进行排序?

标签: phpjson

解决方案


推荐阅读