2012-12-16 89 views
0

由於某種原因,我正在爲此付出努力。我有2個數組。第一個是所謂的colsArray標準陣列,看起來像這樣:陣列中的PHP值來自其他陣列中的密鑰

Array 
(
    [0] => fName 
    [1] => lName 
    [2] => city 
) 

二是多維數組稱爲query_data,看起來像這樣:

Array 
(
    [0] => Array 
    (
     [recordID] => xxx 
     [fName] => xxx 
     [lName] => xxx 
     [address1] => xxx 
     [city] => xx 
     [zip] => xxx 
     [vin] => xxx 
    ) 

[1] => Array 
    (
     [recordID] => xxx 
     [fName] => xxx 
     [lName] => xxx 
     [address1] => xxx 
     [city] => xxx 
     [zip] => xxx 
     [vin] => xxx 
    ) 

[2] => Array 
    (
     [recordID] => xxx 
     [fName] => xxx 
     [lName] => xxx 
     [address1] => xxx 
     [city] => xxx 
     [zip] => xxx 
     [vin] => xxx 
    ) 

[3] => Array 
    (
     [recordID] => xxx 
     [fName] => xxx 
     [lName] => xxx 
     [address1] => xxx 
     [city] => xxx 
     [zip] => xxx 
     [vin] => xxx 
    ) 

我只需要使用這兩個數組創建一個新數組,該數組包含來自query_data數組中的所有數據,其中的鍵位於第一個數組colsArray中。新的陣列看起來像這樣:

Array 
(
    [0] => Array 
    (

     [fName] => xxx 
     [lName] => xxx 
     [city] => xx 

    ) 

[1] => Array 
    (
     [fName] => xxx 
     [lName] => xxx 
     [city] => xx 
    ) 

[2] => Array 
    (
     [fName] => xxx 
     [lName] => xxx 
     [city] => xx 
    ) 

[3] => Array 
    (
     [fName] => xxx 
     [lName] => xxx 
     [city] => xx 
    ) 
) 

對此的任何幫助將是偉大的。

謝謝!

+0

不知道你爲什麼沒有選擇答案,但看看我的。 –

回答

8

PHP提供了一個variety of array functions,和你平時逃脫只是結合了一堆那些:

$keys = array_flip($colsArray); 
$new_data = array(); 

foreach($query_data as $key => $data) { 
    $new_data[$key] = array_intersect_key($data, $keys); 
} 

或者,更實用的風格,但更多的內存密集型:

$new_data = array_map(
    'array_intersect_key', // or just array_intersect_key in newer PHP versions 
    $query_data, 
    array_pad(array(), count($query_data), array_flip($colsArray)) 
); 
+0

這只是美麗的。 –

+1

謝謝@Felix。這是完美的。我試圖使用類似的東西,但幾乎沒有光滑,它不工作。再次感謝 – Sequenzia

1
$finalarr = []; 
foreach ($query_data as $data) { 
    $arr = []; 
    foreach ($colsArray as $key){ 
     $arr[$key] = $data[$key]; 
    } 
    $finalarr[] = $arr; 
} 

用於創建陣列的[]表示法是新的,因此您可能必須改用array()