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

如何合并数组一级键与二级值并移除关联键,生成目标索引数组?

解决PHP数组格式转换问题:合并一级键与二级值并移除关联键

嘿,这个需求很常见,用PHP的几个数组操作函数就能轻松实现,我给你两种实用的方案:

方案一:foreach循环(直观易懂,适合新手)

这种方法逻辑清晰,一步步处理每个元素,容易理解和调试:

// 你的原始关联数组
$originalArray = [
    '2018-03-12' => [
        'United States' => 4,
        'Australia' => 15,
        'United Kingdom' => 0,
        'New Zealand' => 0
    ],
    '2018-03-13' => [
        'United States' => 0,
        'Australia' => 8,
        'United Kingdom' => 2,
        'New Zealand' => 0
    ]
];

$result = [];
// 遍历原始数组的每个日期键和对应的国家数据
foreach ($originalArray as $date => $countryValues) {
    // 1. 用array_values把二级关联数组转成索引数组(只保留数值)
    // 2. 把日期作为第一个元素,和数值数组合并后加入结果数组
    $result[] = array_merge([$date], array_values($countryValues));
}

// 输出转换后的数组
print_r($result);

方案二:array_map函数(简洁高效)

如果喜欢更简洁的写法,可以用array_map配合array_keys来实现,核心逻辑和方案一一致,但代码更紧凑:

$originalArray = [
    '2018-03-12' => [
        'United States' => 4,
        'Australia' => 15,
        'United Kingdom' => 0,
        'New Zealand' => 0
    ],
    '2018-03-13' => [
        'United States' => 0,
        'Australia' => 8,
        'United Kingdom' => 2,
        'New Zealand' => 0
    ]
];

// 用array_map同时遍历日期键和对应的数据
$result = array_map(
    function($date, $countryValues) {
        return array_merge([$date], array_values($countryValues));
    },
    array_keys($originalArray), // 获取所有日期键
    $originalArray // 获取每个日期对应的国家数据
);

print_r($result);

最终效果

两种方案都会输出你想要的格式:

Array
(
    [0] => Array
        (
            [0] => 2018-03-12
            [1] => 4
            [2] => 15
            [3] => 0
            [4] => 0
        )

    [1] => Array
        (
            [0] => 2018-03-13
            [1] => 0
            [2] => 8
            [3] => 2
            [4] => 0
        )

)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:53:36