PHP数组嵌套添加问题求助:如何合并数组生成目标结构
解决PHP数组嵌套添加与键顺序调整问题
嘿,我来帮你搞定这个数组嵌套的问题!看起来你需要调整原数组里的字段顺序,同时基于现有数据添加新的嵌套元素到目标数组中。下面一步步来实现:
首先先把你的原始数据用规范的PHP代码写出来,方便后续操作:
$A = [ 1001 => [ [ 'name' => 'Joe', 'surname' => 'Doe', 'age' => 20, 'height' => 180, 'weight' => 80 ] ] ]; $B = [ 'height' => 200, 'weight' => 100 ];
第一步:调整原数组的字段顺序
你需要把age移到最后,最简单的方式就是重新构造数组,按你想要的顺序声明字段:
// 取出原用户数据 $originalUser = $A[1001][0]; // 按指定顺序重新组装 $adjustedUser = [ 'name' => $originalUser['name'], 'surname' => $originalUser['surname'], 'height' => $originalUser['height'], 'weight' => $originalUser['weight'], 'age' => $originalUser['age'] ];
第二步:生成新的用户条目(用数组B的数据替换)
基于原用户信息,把height和weight替换成数组B的值,同样保持字段顺序:
$newUser = [ 'name' => $originalUser['name'], 'surname' => $originalUser['surname'], 'height' => $B['height'], 'weight' => $B['weight'], 'age' => $originalUser['age'] ];
第三步:构建最终的目标数组
把调整后的原用户和新生成的用户条目都放到1001对应的数组里:
$result = [ 1001 => [ $adjustedUser, $newUser ] ]; // 打印结果看看 print_r($result);
执行这段代码后,你会得到想要的结果:
Array ( [1001] => Array ( [0] => Array ( [name] => Joe [surname] => Doe [height] => 180 [weight] => 80 [age] => 20 ) [1] => Array ( [name] => Joe [surname] => Doe [height] => 200 [weight] => 100 [age] => 20 ) ) )
额外优化:动态处理字段顺序
如果以后字段可能变动,不想硬编码顺序,可以用这种更灵活的方式:
// 定义你想要的字段顺序 $keyOrder = ['name', 'surname', 'height', 'weight', 'age']; // 给原用户数据排序 $adjustedUser = array_replace(array_flip($keyOrder), $originalUser); // 生成新用户并排序 $tempNewUser = array_merge($originalUser, $B); $newUser = array_replace(array_flip($keyOrder), $tempNewUser);
只要修改$keyOrder数组,就能轻松调整输出的字段顺序啦。
内容的提问来源于stack exchange,提问作者Martin Čapka
相关产品推荐
相关产品推荐

