如何在遍历多维数组的嵌套循环中为每个子数组添加新数据?
如何在嵌套循环中为多维数组的子数组添加新数据
你之前的初始代码无效,核心问题是直接操作$klanten['newData']是给整个外层数组添加键值对,而不是对应位置的子数组。要在嵌套循环里实现需求,得通过外层循环拿到的子数组键名/索引,精准定位到每个子数组再修改。
假设你的初始代码大概是这样:
$klanten = [ ['name' => 'A', 'age' => 20], ['name' => 'B', 'age' => 30] ]; $keys = array_keys($klanten); for ($i = 0; $i < count($keys); $i++) { // 内层foreach遍历子数组键值对 foreach ($klanten[$keys[$i]] as $k => $v) { echo "$k: $v\n"; } // 之前的错误写法:直接给外层数组加键 // $klanten['newData'] = 'test'; }
修改后的正确写法:
$klanten = [ ['name' => 'A', 'age' => 20], ['name' => 'B', 'age' => 30] ]; $keys = array_keys($klanten); for ($i = 0; $i < count($keys); $i++) { $subKey = $keys[$i]; // 获取当前子数组的键名(不管是索引还是关联键) // 内层遍历子数组(保留你原来的输出逻辑) foreach ($klanten[$subKey] as $k => $v) { echo "$k: $v\n"; } // 精准定位到当前子数组,添加新数据 $klanten[$subKey]['newData'] = 'test'; } // 验证结果 print_r($klanten);
如果你的$klanten是纯索引数组(键都是0、1、2...),也可以简化外层循环,不用array_keys:
for ($i = 0; $i < count($klanten); $i++) { foreach ($klanten[$i] as $k => $v) { echo "$k: $v\n"; } $klanten[$i]['newData'] = 'test'; }
本质就是:必须通过外层循环拿到的子数组的具体键/索引,去访问对应的子数组,再给它添加新键值对,而不是直接操作外层数组本身。
内容的提问来源于stack exchange,提问作者Patrick_iot
相关产品推荐
相关产品推荐

