2014-01-23 171 views
0

我有這樣的陣列($originalArray):PHP - 轉換數組多維

Array ( 
    [c] => 1 
    [d] => 2 
    [e] => 1 
    [a] => 1 
) 

,並想將它轉化成/創建另一個多維它看起來像:

Array ( 
    [0] => Array ([name] => a [status] => 1) 
    [1] => Array ([name] => c [status] => 1) 
    [2] => Array ([name] => d [status] => 2) 
    [3] => Array ([name] => e [status] => 1) 
) 

像這樣的東西我在想:

$new_array = array(); 
foreach ($originalArray as $key=>$val) 
    { 
    $new_array[] = array('name'=>$originalArray[$val],'status'=>$originalArray[$key]); 
} 
+0

$ originalArray [$ val]完全錯誤。你不能使用你的值作爲鍵... $ val是ALREADY的值。 –

+0

Marc B - 您可以使用自己的鍵作爲值。 – FartMachine4U

+0

是的,但只有當這些鍵實際存在於數組中時纔有效。上面的代碼是毫無意義的,除非數組的構建使得所有鍵=值。 –

回答

1

它比這更簡單:

$new_array[] = array("name" => $key, "status" => $val); 
1

嘗試:

$input = array('c' => 1, 'd' => 2, 'e' => 1, 'a' => 1); 
$output = array(); 

foreach ($input as $name => $status) { 
    $output[] = array(
    'name' => $name, 
    'status' => $status 
); 
} 
1

你的邏輯是正確的。可以通過使用從循環中獲得的$ key,$ value變量來減少代碼。

$new_array = array(); 
foreach ($originalArray as $key=>$val) 
{ 
    $new_array[] = array('name'=>$val,'status'=>$key); 
}