2015-10-14 78 views
-2

我有以下数组和我需要它被组合为如下腓复杂阵列的联接函数

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'..) 

) 

请帮助我在这个

+3

谷歌这样做:'PHP转置数组' – Rizier123

+0

或使用foreach()并获取阵列。 –

回答

0

您可以使用以下解决方案:

function transpose($array) { 
     array_unshift($array, null); 
     return call_user_func_array('array_map', $array); 
    } 

这不是我自己的答案。检查此链接为原来的答案 链接:Transposing multidimensional arrays in PHP

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>'; 
0

可以使用array_maparray_combinearray_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); 

Demo