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

如何在不使用foreach的情况下向多维数组的lessons添加flag元素

给多维数组的lessons子数组批量添加元素(用array_map实现)

原始数组:

$array = [
    [
      'id' => 1,
      'lessons' => [
         [
           'name' => 'PHP',
         ],
         [
           'name' => 'Python',
         ]
     ]
   ],
   [
      'id' => 2,
      'lessons' => [
         [
           'name' => 'Java',
         ],
         [
           'name' => 'Ruby',
         ]
     ]
   ],
];

需求:给每个lessons数组里的子元素都加上flag => true键值对。

你写的代码存在几个问题:

  • 回调函数的参数是$array,但内部却使用未定义的$topics变量
  • 直接把lessons数组和['flag' => true]合并,这只会把flag加到lessons数组本身,而不是每个子元素里

正确的实现方式是用嵌套array_map,外层处理顶层的每个元素,内层处理每个lessons里的子元素:

$csmap_data = array_map(function($item) {
    // 对当前item的lessons数组做处理,给每个lesson添加flag
    $item['lessons'] = array_map(function($lesson) {
        return $lesson + ['flag' => true];
    }, $item['lessons']);
    return $item;
}, $array);

执行后得到的结果示例:

[
    'id' => 1,
    'lessons' => [
        [
            'name' => 'PHP',
            'flag' => true
        ],
        [
            'name' => 'Python',
            'flag' => true
        ]
    ]
],
[
    'id' => 2,
    'lessons' => [
        [
            'name' => 'Java',
            'flag' => true
        ],
        [
            'name' => 'Ruby',
            'flag' => true
        ]
    ]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:05:17