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

PHP:将键值对数组转换为含stdClass对象的索引数组

PHP关联数组转对象数组的实现方案

嗨,这事儿其实挺简单的,咱们直接针对你的$array1结构来转换就行,给你几种实用的实现方式,都能生成符合要求的$array2:

首先先明确原数组的定义(方便你直接测试):

$array1 = [
    2 => 2,
    60 => 2,
    12 => 1,
    61 => 1,
    9 => 1,
    14 => 1
];

方法一:基础foreach遍历(最直观,易理解)

这种方法适配所有PHP版本,逻辑清晰,新手也能快速看懂:

$array2 = [];

// 遍历原数组,键对应目标对象的id,值对应count
foreach ($array1 as $id => $count) {
    // 新建stdClass对象并赋值
    $item = new stdClass();
    $item->id = $id;
    $item->count = $count;
    // 将对象追加到新数组末尾
    $array2[] = $item;
}

方法二:用array_map简化代码(代码更紧凑)

利用array_map函数同时处理原数组的值和键(通过array_keys获取所有id),省去手动循环的冗余代码:

$array2 = array_map(function($count, $id) {
    $item = new stdClass();
    $item->id = $id;
    $item->count = $count;
    return $item;
}, $array1, array_keys($array1));

方法三:PHP 7.4+ 极简写法(短箭头函数+强制类型转换)

如果你用的是PHP 7.4及以上版本,可以用短箭头函数+数组转对象的强制类型转换,一行搞定:

$array2 = array_map(fn($count, $id) => (object)['id' => $id, 'count' => $count], $array1, array_keys($array1));

验证结果

执行完任意一种方法后,用print_r($array2)输出,就能得到你想要的结构:

Array
(
    [0] => stdClass Object
        (
            [id] => 2
            [count] => 2
        )
    [1] => stdClass Object
        (
            [id] => 60
            [count] => 2
        )
    ... // 后续对象依次对应原数组的键值对
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:50:19