我有以下数组,我需要将它组合为以下
之后的组合数组Array(
[common_name] => Array
(
[0] =>
[1] => asd
[2] => asdqerad
)
[category] => Array
(
[0] =>
[1] => Short Gun
[2] => Air Rifle
)
[type] => Array
(
[0] =>
[1] => asd
[2] => sd
)
[model] => Array
(
[0] =>
[1] => asd
[2] => rfwasfd
)
[calibre] => Array
(
[0] =>
[1] => asd
[2] => asd
)
[barrel_lengh] => Array
(
[0] =>
[1] => asd
[2] => asdf
)
) 我想将数组压缩成以下格式
array(
array(common_name=>'',category=>'','type'='',model=>'',calibre=''..)
array(common_name=>'asd',category=>'Short Gun','type=asd'',model=>asd'',calibre='asd'..)
)
请帮助我
答案 0 :(得分:0)
您可以使用以下解决方案:
function transpose($array) {
array_unshift($array, null);
return call_user_func_array('array_map', $array);
}
这不是我自己的答案。检查此链接以获取原始答案 链接:Transposing multidimensional arrays in PHP
答案 1 :(得分:0)
你可以试试这个:
$arr = Array(
'common_name' =>
Array(
0 => '',
1 => 'asd',
2 => 'asdqerad'
),
'category' =>
Array(
0 => '',
1 => 'Short Gun',
2 => 'Air Rifle'
),
'type' =>
Array(
0 => '',
1 => 'asd',
2 => 'sd'
),
'model' =>
Array(
0 => '',
1 => 'asd',
2 => 'rfwasfd'
),
'calibre' =>
Array(
0 => '',
1 => 'asd',
2 => 'asd'
),
'barrel_lengh' =>
Array(
0 => '',
1 => 'asd',
2 => 'asdf'
)
);
$len = count($arr['common_name']);
$i = 0;
for($i=0;$i<$len;$i++) {
foreach ($arr as $key => $value) {
$temp_arr [$key] = $value[$i];
}
$new_arr [] = $temp_arr;
}
echo '<pre>',print_r($new_arr),'</pre>';
答案 2 :(得分:0)
您可以使用array_map
,array_combine
和array_keys
来执行此操作
$keys = array_keys($arr);
$result = array_map(function($values)use($keys) {
return array_combine($keys, $values);
}, array_map(null, $arr['common_name'], $arr['category'], $arr['type'], $arr['model'], $arr['calibre'], $arr['barrel_lengh']));
print_r($result);