You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何将JSON文件读取的数组转为ArrayObject并按字段排序

JSON转PHP数组及排序实现方案

1. JSON转PHP关联数组实现

直接使用PHP内置的json_decode方法即可完成转换,第二个参数传入true时,会自动把JSON中的对象转为PHP关联数组:

// 读取外部JSON文件内容
$jsonContent = file_get_contents('你的JSON文件路径.json');
// 第二个参数设为true,直接完成转换
$phpArray = json_decode($jsonContent, true);

// 转换后输出格式和你需求的PHP数组结构完全匹配,示例数据转换后结构如下:
/*
Array
(
    [0] => Array
        (
            [serial] => 991
            [name] => hello
        )
    [1] => Array
        (
            [serial] => 993
            [name] => world
        )
    [2] => Array
        (
            [serial] => 994
            [name] => island
        )
)
*/

2. 基于键值排序的实现

方案1:转换为关联数组后使用array_multisort

如果需要按serial字段升序排序,实现代码如下:

// 提取用于排序的目标列
$serialColumn = array_column($phpArray, 'serial');
// 排序规则作用于原数组,SORT_ASC代表升序,如需降序改为SORT_DESC即可
array_multisort($serialColumn, SORT_ASC, $phpArray);

如果需要按name字段字符串排序,修改为:

$nameColumn = array_column($phpArray, 'name');
array_multisort($nameColumn, SORT_ASC, SORT_STRING, $phpArray);

方案2:无需转换为关联数组,直接排序

如果json_decode时不传入第二个参数,得到的是stdClass对象组成的数组,不需要转换格式也可以直接排序:

// 得到对象数组
$objArray = json_decode($jsonContent);

// 方式1:依旧使用array_multisort
$serialColumn = array_column($objArray, 'serial');
array_multisort($serialColumn, SORT_ASC, $objArray);

// 方式2:使用usort实现自定义排序,适合复杂排序场景
usort($objArray, function($a, $b) {
    // 升序排序,如需降序调换$a和$b的位置即可
    return $a->serial <=> $b->serial;
});

提示:PHP7.0及以上版本支持太空船运算符<=>,低版本可以替换为$a->serial - $b->serial实现同等效果

内容的提问来源于stack exchange,提问作者dhanyn10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:18:03