2015-01-08 100 views
0

我在PHP現有陣列,像這樣(當我使用print_r):PHP - 獲取陣列和存儲中的陣列/操縱

Array (
    [0] => Array(
     [value] => 188 
     [label] => Lucy 
    ) 
    [1] => Array (
     [value] => 189 
     [label] => Jessica 
    ) 
    [2] => Array (
     [value] => 192 
     [label] => Lisa 
    ) 
    [3] => Array (
     [value] => 167 
     [label] => Carol 
    ) 
    // and so on... 
) 

從這個數組我需要操縱或創建一個新的數組像這樣:

Array (
    [Lucy] => 188 
    [Jessica] => 189 
    [Lisa] => 192 
    [Carol] => 167 
) 

這樣做的最佳方式是什麼?

我需要的名字成爲了鍵,以便然後我就可以按字母順序排序,像這樣:

uksort($array, 'strnatcasecmp'); 
+2

你有沒有做過任何嘗試?應該很簡單。 –

+0

[PHP - 在多維數組中未設置]的可能重複(http://stackoverflow.com/questions/7260468/php-unset-in-a-multidimensional-array) – johnny

回答

6

恕我直言最好的和最簡單的方法是這樣的:

$newArray = []; 
foreach ($array as $var) { 
    $newArray[$var['label']] = $var['value']; 
} 

注:如果不因爲[]工作,然後將第一行更改爲經典版本:$newArray = array();,因爲它是相同的。

6

PHP 5.5有一個不錯的新功能array_column()功能,這將完全適合你。我想你想是這樣的:

$result = array_column($array, 'value', 'label'); 
0

你可以使用array_reduce爲好,像這樣:

$new_array = array_reduce($old_array, function($new_array, $item) { 
    $new_array[$item['label']] = $item['value']; 
    return $new_array; 
}, array()); 

在簡單的情況下,這無疑是矯枉過正。在進行大量數組轉換的應用程序中,array_reduce的第二個參數可以根據上下文進行分解和替換。