2013-10-03 55 views
1

我已經搜索過SO和Google,並且發現了很多類似的問題,但沒有一個符合我的確切用例。重命名多維關聯數組中的鍵

我有陣列的一個這樣的數組:

Array 
(
    [0] => Array 
     (
      [id] => c80c5133-1140-8187-ad3b-524b4ed0f1a8 
      [date_entered] => 10/01/2013 03:38pm 
     ) 

    [1] => Array 
     (
      [id] => 176815c6-b57f-7643-0f08-524b4f22b51c 
      [date_entered] => 10/01/2013 03:42pm 
     ) 

    [2] => Array 
     (
      [id] => df0f8824-0b12-b92e-1d2e-524c6cb19c41 
      [date_entered] => 10/02/2013 11:56am 
     ) 

) 

我需要重命名所述第一尺寸的鍵是在第二維陣列這樣的date_entered鍵的值,使得我可以(希望)按最近的日期對數組進行排序。我需要保留每個數組的內容,因爲我需要獲取對應於正確日期的ID。

Array 
(
    [10/01/2013 03:38pm] => Array 
     (
      [id] => c80c5133-1140-8187-ad3b-524b4ed0f1a8 
      [date_entered] => 10/01/2013 03:38pm 
     ) 

    [10/01/2013 03:42pm] => Array 
     (
      [id] => 176815c6-b57f-7643-0f08-524b4f22b51c 
      [date_entered] => 10/01/2013 03:42pm 
     ) 

    [10/02/2013 11:56am] => Array 
     (
      [id] => df0f8824-0b12-b92e-1d2e-524c6cb19c41 
      [date_entered] => 10/02/2013 11:56am 
     ) 

) 

我想這樣做(這顯然是不正確的),但對於我的生活,我仍然無法得到它。

foreach ($array as $key) { 
    foreach ($key as $subkey => $subvalue) { 
     if ($subkey == 'date_entered') { 
      // change the name of the key? 
     } 
    } 
} 

我真的很煩惱多維數組並操縱它們,無論我多麼閱讀和練習!誰能幫忙?

+0

我想你也能更好地很容易地對其進行排序: http://stackoverflow.com/questions/2699086/sort-multidimensional-array-by-value-2 –

回答

4

此代碼應該這樣做:

$newArray = array(); 

foreach ($array as $id => $dataset) { 
    $newArray[ $dataset['date_entered'] ] = $dataset; 
} 

我創建了一個新的數組這裏是因爲「改變foreach循環中的陣列可能會導致意外的行爲」source)。

如果你真的需要保留原始陣列,您可以使用數字索引來訪問元素:

$arrCount = count($array); 
for ($i=0; $i<$arrCount; $i++) { 
    $array[ $dataset['date_entered'] ] = $array[$i]; 
    unset($array[$i]); 
} 

的所有元素都被複制,他們得到取消設置/在以前的密鑰刪除之前。

+1

謝謝你,這個工作!此外,感謝您展示保留原始數組的替代方法以及解釋鏈接。 –

+1

@ CastleBrav0不客氣。感謝您接受答案(許多新的SO用戶不會)。 – ComFreek