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

PHP(CodeIgniter)如何将数组合并为嵌套关联数组?

解决CodeIgniter中数组嵌套合并的问题

嘿,作为CodeIgniter新手遇到这种数组结构调整很正常,我来一步步帮你搞定~

首先,先把你给出的原始数组整理成合法的PHP格式(你写的格式有小瑕疵,修正后方便操作):

// 你从数据库获取的主数据数组
$mainData = [
    0 => [
        'id' => 1,
        'no_of_services' => 'guide,assistant'
    ]
];

// 单独获取的services数据数组
$servicesData = [
    'id' => 1,
    'quote_id' => 1,
    'tour_reference' => 'GD/Amsterdam/2019'
];

单个元素的嵌套合并

要把$servicesData嵌套到主数组的第一个元素里,直接赋值就行,非常直观:

// 将services数组嵌套进主数组的第一个元素
$mainData[0]['services'] = $servicesData;

// 打印结果验证
print_r($mainData);

执行后你就能得到想要的数组结构:

Array
(
    [0] => Array
        (
            [id] => 1
            [no_of_services] => guide,assistant
            [services] => Array
                (
                    [id] => 1
                    [quote_id] => 1
                    [tour_reference] => GD/Amsterdam/2019
                )

        )

)

批量处理多个元素的情况

如果你的主数组有多个元素(比如查询出多条数据),可以通过循环来批量嵌套对应的services数据:

// 示例:多条主数据
$mainData = [
    0 => ['id' => 1, 'no_of_services' => 'guide,assistant'],
    1 => ['id' => 2, 'no_of_services' => 'driver']
];

// 示例:按id索引的services数据集
$servicesById = [
    1 => ['id' => 1, 'quote_id' => 1, 'tour_reference' => 'GD/Amsterdam/2019'],
    2 => ['id' => 2, 'quote_id' => 2, 'tour_reference' => 'GD/Paris/2019']
];

// 循环嵌套,用引用修改原数组
foreach ($mainData as &$item) {
    // 用??运算符处理找不到对应services的情况,避免报错
    $item['services'] = $servicesById[$item['id']] ?? [];
}
unset($item); // 释放引用,防止后续操作意外修改数组

print_r($mainData);

额外小提示

在CodeIgniter中,如果你的主数据和services数据来自关联表,其实可以用Active Record的join方法直接关联查询,一次性获取整合后的结构,减少手动合并的步骤。不过如果是复杂的关联场景,上面的手动合并方法依然非常实用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:16:18