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

PHP中如何将指定结构的数组转换为多个一维关联数组?

PHP数组转一维关联数组的实现方法

需求是将结构为“每个键对应一个数组”的二维数组,转换为多个包含对应索引键值对的一维关联数组。以下是几种可行的实现方式:

方法一:基础循环实现

这种方式逻辑直观,适合理解底层原理:

// 定义原数组
$originalArray = [
    'cuisineId' => [1, 2],
    'dishId' => [90, 525],
    'quantity' => [1, 2],
    'price' => [200, 440]
];

$result = [];
// 获取子数组的长度(假设所有子数组长度一致)
$itemCount = count($originalArray['cuisineId']);

// 循环每个索引位置,组装一维数组
for ($i = 0; $i < $itemCount; $i++) {
    $result[] = [
        'cuisineId' => $originalArray['cuisineId'][$i],
        'dishId' => $originalArray['dishId'][$i],
        'quantity' => $originalArray['quantity'][$i],
        'price' => $originalArray['price'][$i]
    ];
}

// 输出转换后的结果
print_r($result);

方法二:用array_map简化代码

如果原数组的键固定,可利用array_map函数实现更简洁的写法:

$originalArray = [
    'cuisineId' => [1, 2],
    'dishId' => [90, 525],
    'quantity' => [1, 2],
    'price' => [200, 440]
];

// 展开原数组的子数组作为array_map的参数,回调函数组装一维数组
$result = array_map(function(...$values) {
    return [
        'cuisineId' => $values[0],
        'dishId' => $values[1],
        'quantity' => $values[2],
        'price' => $values[3]
    ];
}, ...array_values($originalArray));

print_r($result);

方法三:通用化实现(适配任意键数量)

如果原数组的键可能变动,或者需要兼容更多键的场景,可使用通用化的循环方式:

$originalArray = [
    'cuisineId' => [1, 2],
    'dishId' => [90, 525],
    'quantity' => [1, 2],
    'price' => [200, 440]
];

$result = [];
// 获取原数组的所有键名
$keys = array_keys($originalArray);
// 获取子数组长度
$itemCount = count($originalArray[$keys[0]]);

for ($i = 0; $i < $itemCount; $i++) {
    $currentItem = [];
    // 遍历每个键,组装当前索引的键值对
    foreach ($keys as $key) {
        $currentItem[$key] = $originalArray[$key][$i];
    }
    $result[] = $currentItem;
}

print_r($result);

以上三种方式都能得到目标格式的一维关联数组,可根据实际场景选择合适的实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:22:59