如何将PHP二维数组的一级键作为新元素添加到对应二级行中?
如何将PHP二维数组的一级键添加到对应二级数组中?
给定如下PHP二维数组:
$members = [ 'myname' => ['userid' => 52, 'age' => 46], 'isname' => ['userid' => 22, 'age' => 47], 'yourname' => ['userid' => 47, 'age' => 85] ];
需要把每个一级键(比如myname)添加到对应的二级数组末尾,最终得到如下结果:
[ 'myname' => ['userid' => 52, 'age' => 46, 0 => 'myname'], 'isname' => ['userid' => 22, 'age' => 47, 0 => 'isname'], 'yourname' => ['userid' => 47, 'age' => 85, 0 => 'yourname'], ]
已有一段可行的实现代码:
foreach ($members as $key => $item) { array_push($members[$key], $key); }
除此之外,还可以通过以下几种方式实现需求:
方法1:引用遍历直接修改二级数组
直接引用遍历的二级数组元素,无需通过键名访问原数组,代码更简洁直观:
foreach ($members as $key => &$item) { $item[] = $key; } unset($item); // 解除引用,避免后续操作意外污染数组
方法2:使用array_map生成新数组
不修改原数组,返回全新的结果数组,适合需要保留原数组的场景:
$newMembers = array_map(function($value, $key) { $value[] = $key; return $value; }, $members, array_keys($members));
方法3:手动组装新数组
手动遍历原数组并构建结果,逻辑清晰,便于后续扩展额外处理逻辑:
$newMembers = []; foreach ($members as $key => $item) { $newMembers[$key] = $item + [$key]; }
方法4:用array_walk修改原数组
通过回调函数直接修改原数组的每个元素:
array_walk($members, function(&$item, $key) { $item[] = $key; });
内容的提问来源于stack exchange,提问作者mickmackusa
相关产品推荐
相关产品推荐

