PHP将索引数组与关联数组组合为带指定二级键的二维数组
实现方案
方案1:foreach 实现(易读易维护,推荐)
可以先将关联数组$test的键、值转为索引数组,同步按索引匹配$colors的项,代码如下:
$final = []; $testKeys = array_keys($test); $testValues = array_values($test); foreach ($colors as $index => $color) { // 两个数组长度不一致时自动终止,避免报错 if (!isset($testKeys[$index]) || !isset($testValues[$index])) { break; } $final[$color] = [ 'name' => $testKeys[$index], 'value' => $testValues[$index] ]; }
方案2:数组函数实现(代码更简洁)
如果确认两个数组长度完全一致,可以用array_map+array_combine组合实现:
$final = array_combine( $colors, array_map( fn($key, $val) => ['name' => $key, 'value' => $val], array_keys($test), array_values($test) ) );
注意事项
两种方案的匹配逻辑都是按数组的内置顺序一一对应:$colors的第N项对应$test遍历的第N个键值对,和键名本身无关。如果你的$test需要指定特定排序,提前用ksort等排序函数处理即可。
内容的提问来源于stack exchange,提问作者Jeremy Kolassa
相关产品推荐
相关产品推荐

