2011-04-28 29 views
1

問題:從對象/陣列 提取數據,並使用與來自內部循環生成的唯一密鑰的多維數組表示此數據。模式構建多維數組具有獨特的鍵

我總是發現自己構建多維數組是這樣的:

$final_array = array(); 
foreach ($table as $row) { 
    $key = null; 
    $data = array(); 
    foreach ($row as $col => $val) { 
     /* Usually some logic goes here that does 
      some data transformation/concatenation stuff */ 
     if ($col=='my_unique_key_name') { 
      $key = $val; 
     } 
     $data[$col] = $val; 
    } 
    if (!is_null($key) { 
     if (!isset($final_array[$key]) { 
      $final_array[$key] = array(); 
     } 
     $final_array[$key][] = $data; 
    } 
} 

我不禁在想,如果我經常這樣做是出於習慣,但它與所有的鍵 - 那種感覺的詳細檢查和什麼。有沒有我不使用的本機功能?這可以重構成更簡單的東西,或者我是否過度這個?

+3

您可以加入輸入和輸出的例子的問題..以及這種結構的原因 – 2011-04-28 23:23:03

+0

這是一個很好的問題。當我考慮編寫像這樣的循環時,通常是因爲我需要格式化數據,以便按照特定方式對數組進行過濾或排序,並且需要以某種方式構建數組,以使輕鬆地創建數據。 – 2011-04-29 04:06:22

回答

0

你爲什麼總是這樣做?似乎並不是日常工作中常見的東西......無論如何,這有點神祕(一個例子會很好),但是你有沒有使用數組的序列化轉儲的MD5散列來唯一定義一個關鍵?

$key = md5(serialize($value)); 
+0

嗯..我想這不是一個超級每日類型的東西。爲了顯示數據,它主要用於數據轉換。我想重新格式化數據,然後將它放置在一個數組中,以便我可以過濾它/按照需要對其進行分類。那有意義嗎? – 2011-04-29 04:04:51