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

PHP中如何将指定JSON数组格式转换为目标对象格式?

在PHP中实现数组结构转换的几种方法

嘿,这个转换需求在PHP里其实有好几种实用的实现方式,我给你整理了几个常用的:

方法一:基础foreach循环(最直观易理解)

这是最基础也最容易调试的方式,适合所有场景,哪怕原数组里的键名不固定也能处理:

$originalArray = [
    ["value-1" => "azerty", "value-2" => "azerty"],
    ["value-1" => "azerty", "value-2" => "azerty"]
];

$result = [];

foreach ($originalArray as $item) {
    foreach ($item as $key => $value) {
        // 如果结果数组里还没有这个键,先初始化一个空数组
        if (!isset($result[$key])) {
            $result[$key] = [];
        }
        // 把当前值追加到对应键的数组里
        $result[$key][] = $value;
    }
}

print_r($result);

这种方式的好处是逻辑清晰,哪怕是新手也能一眼看懂,而且能自动适配原数组里的所有键名,不需要提前知道有哪些key。

方法二:用array_column函数(简洁高效,适合已知键名的场景)

如果已经明确知道要提取的键名(比如这里的value-1和value-2),用PHP内置的array_column会更简洁:

$originalArray = [
    ["value-1" => "azerty", "value-2" => "azerty"],
    ["value-1" => "azerty", "value-2" => "azerty"]
];

$result = [
    "value-1" => array_column($originalArray, "value-1"),
    "value-2" => array_column($originalArray, "value-2")
];

print_r($result);

array_column专门用来从多维数组中提取指定键的所有值,代码量少,执行效率也高,但缺点是需要提前知道要处理的键名,没法动态适配未知的键。

方法三:用array_reduce函数(函数式风格,适合动态键名)

如果你喜欢函数式编程的写法,array_reduce也能实现这个需求,同样支持动态键名:

$originalArray = [
    ["value-1" => "azerty", "value-2" => "azerty"],
    ["value-1" => "azerty", "value-2" => "azerty"]
];

$result = array_reduce($originalArray, function ($acc, $item) {
    foreach ($item as $key => $value) {
        $acc[$key][] = $value;
    }
    return $acc;
}, []);

print_r($result);

这里的$acc是累加器,每次迭代都会把当前元素的键值对合并到累加器里,最终得到我们想要的结构。这种写法比较简洁,也能处理动态键名,适合习惯函数式风格的开发者。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:00:03