如何将扁平关联数组转换为含关联行的索引二维数组?
解决PHP关联数组转索引数组并保留原键的问题
你的需求是将关联数组的键转为连续数字索引,同时把原键存入子数组的code字段,原对应值存入name字段。你当前的array_map代码只返回了原键,没有完成值和键的组合,下面是两种可行的实现方式:
方法一:使用array_map完成转换
利用array_map可同时接收原数组和原数组键数组的特性,在回调函数里构造目标子数组:
$originalArray = [ 123456 => 'John Doe', 654321 => 'Doe John' ]; $convertedArray = array_map(function ($value, $key) { return [ 'name' => $value, 'code' => $key ]; }, $originalArray, array_keys($originalArray)); print_r($convertedArray);
这段代码中,array_map会遍历$originalArray的每个值和array_keys($originalArray)的每个键,回调函数将它们组合成包含name和code的子数组,最终生成连续数字索引的数组。
方法二:使用foreach循环(更直观)
如果觉得array_map的逻辑不够直观,用foreach循环逐个处理也很清晰:
$originalArray = [ 123456 => 'John Doe', 654321 => 'Doe John' ]; $convertedArray = []; foreach ($originalArray as $code => $name) { $convertedArray[] = [ 'name' => $name, 'code' => $code ]; } print_r($convertedArray);
循环过程中,每次将当前键赋值给$code,值赋值给$name,然后构造子数组添加到新数组中,自动生成连续数字索引。
两种方法都能得到你预期的结果:
Array ( [0] => Array ( [name] => John Doe [code] => 123456 ) [1] => Array ( [name] => Doe John [code] => 654321 ) )
内容的提问来源于stack exchange,提问作者user19591044
相关产品推荐
相关产品推荐

