2017-02-23 45 views
-1

我的代碼有問題。例如,我有一個這樣的數組:自定義數組multidim值

[ 
    'a' => ['f', 'g'], 
    'b' => ['h', 'i'], 
    'c' => ['j', 'k'] 
] 

我想改變我的數組是這樣的:

[ 
    ['a' => 'f', 'b' => 'h', 'c' => 'j'], 
    ['a' => 'g', 'b' => 'i', 'c' => 'k'] 
] 

我需要幫助解決這個問題。由於

+3

對於你需要做的是什麼奇怪的原因? – user2342558

+0

我想讓它使用數組的json。如果我使用上面的示例數組來轉換爲json,則很難調用數據 –

回答

0

我測試了這個在我的本地計算機上

<?php 

$array = [ 
    'a' => ['f', 'g'], 
    'b' => ['h', 'i'], 
    'c' => ['j', 'k'] 
]; 

$ultimate_array = array(); 

foreach($array as $key1 => $child_array) 
{ 
    foreach($child_array as $i => $key2) 
    { 
     if(empty($ultimate_array[$i])) $ultimate_array[$i] = array(); 
     $ultimate_array[$i][$key1] = $key2; 
    } 
} 

print_r($ultimate_array); 

?> 
0

這是一個簡單的例子:

<?php  
$input = [ 
    'a' => ['f', 'g'], 
    'b' => ['h', 'i'], 
    'c' => ['j', 'k'] 
]; 
$output = []; 

foreach ($input as $key=>$entries) { 
    foreach ($entries as $entry) { 
     $output[$key][] = $entry; 
    } 
} 

var_dump($output); 

有些人會認爲這是種更優雅:

<?php 

$input = [ 
    'a' => ['f', 'g'], 
    'b' => ['h', 'i'], 
    'c' => ['j', 'k'] 
]; 
$output = []; 

array_walk($input, function($entries, $key) use (&$output) { 
    array_walk($entries, function($entry) use (&$output, $key) { 
     $output[$key][] = $entry; 
    }); 
}); 

var_dump($output); 

這兩個變種的明顯輸出是:

array(3) { 
    ["a"]=> 
    array(2) { 
    [0]=> 
    string(1) "f" 
    [1]=> 
    string(1) "g" 
    } 
    ["b"]=> 
    array(2) { 
    [0]=> 
    string(1) "h" 
    [1]=> 
    string(1) "i" 
    } 
    ["c"]=> 
    array(2) { 
    [0]=> 
    string(1) "j" 
    [1]=> 
    string(1) "k" 
    } 
}