2016-11-09 98 views
1

我有一個數據庫查詢的數組:轉換鍵 - 值對數組關聯數組,而不使用列名

Array (
    [0] => Array ([div_id] => 21 [div_name] => "Alphabet") 
    [1] => Array ([div_id] => 16 [div_name] => "Elementary") 
    [2] => Array ([div_id] => 19 [div_name] => "Preschool") 
    [3] => Array ([div_id] => 20 [div_name] => "Secondary") 
) 

我想將其改造成:

Array ( 
    [21] => "Alphabet" 
    [16] => "Elementary" 
    [19] => "Preschool" 
    [20] => "Secondary" 
) 

然而, 我無法使用密鑰名稱。我需要引用它們作爲第一列和第二列,因爲在我的上下文中,我無法控制源數據的鍵。我需要使用相同的算法對不同的鍵名的數據,例如:

Array (
    [0] => Array ([unknown_id] => 21 [random] => "Alphabet") 
    [1] => Array ([unknown_id] => 16 [random] => "Elementary") 
    [2] => Array ([unknown_id] => 19 [random] => "Preschool") 
    [3] => Array ([unknown_id] => 20 [random] => "Secondary") 
) 

的問題是非常相似Convert array of key-value pairs into associative array但有[0]和[1]鍵,和我有文字鍵但仍然需要引用數組的第一項和第二項。

+0

最差來最糟糕的是,只需遍歷數組並手動完成即可。 – Daniel

回答

3

你可以做這樣的:

$indexed = array_map('array_values', $data); 
$res = array_combine(array_column($indexed, 0), array_column($indexed, 1)); 

或與array_column的第三個參數:

$res = array_column(array_map('array_values', $data), 1, 0); 
+0

完美。謝謝! – LStarky

2

實際上有一個內置函數來做到這一點。按特定列使用第三個參數來索引數組:

$result = array_column($array, 'div_name', 'div_id'); 

PHP> = 5.5.0需要array_column()或使用PHP Implementation of array_column()

+0

請記住,我不能使用密鑰名稱。此解決方案不起作用。 – LStarky