2009-07-04 50 views
2

我有一個多維陣列看起來像這樣:更改嵌套(多維)陣列轉換成密鑰=>值對在PHP

 
Array 
(
    [0] => Array 
     (
      [ClientID] => ec2173de2134fdsfg4fsdffcb4b5205 
      [Name] => ABC Widgets 
     ) 

    [1] => Array 
     (
      [ClientID] => e5dfgfdg2d760f640aadfgdfgdfg47b 
      [Name] => Acme Co 
     ) 

    [2] => Array 
     (
      [ClientID] => b9dfgsdfg419085c3sdgffdsgfdg313 
      [Name] => 4321 Corp 
     ) 

) 

我想改變爲以下:

 
Array 
(
    ec2173de2134fdsfg4fsdffcb4b5205 => ABC Widgets 
    e5dfgfdg2d760f640aadfgdfgdfg47b => Acme Co 
    b9dfgsdfg419085c3sdgffdsgfdg313 => 4321 Corp 
) 

這樣做的最佳方式是什麼?另外,我會更好地存儲陣列的原始格式,並根據需要轉換爲其他格式?謝謝你的幫助

回答

5
$flat = array(); 
foreach($multidim as $item) 
    $flat[$item['ClientID']] = $item['Name']; 

無論你是最好的存儲原始形式不能一般回答。如果你需要它,你應該存儲它。

+0

謝謝你的清晰,簡潔的答案。 – rickvug 2009-07-04 06:22:35

0

它看起來像您正在創建與原始數據的哈希表。 哈希表是用於訪問和插入單個數據元素非常快。但是,您無法針對記錄中包含的數據運行查詢 - 您只能根據唯一密鑰進行檢索,或者根據生成的密鑰進行插入。

你可能會使用其所有字段的原始格式爲「後端」,併產生一個哈希表像你展示了一個。退步是每次生成這個表時,都會花費CPU週期。

如果拋出這個數據到數據庫中,數據庫引擎將負責創建常規數據表(如您的第一個),並根據需要爲您所使用的特定查詢哈希表(像你的第二個)。您也可以強制它基於某個數據庫列創建哈希表。

+0

用例是我正在使用Campaign Monitor(電子郵件軟件)API。散列是屬於客戶端的API密鑰。 – rickvug 2009-07-04 06:21:04