我有一個這樣的數組:
移動鍵/值
array (size=8)
'cb' => string '<input type="checkbox"/>' (length=24)
'title' => string 'Name' (length=4)
'download_category' => string 'Categories' (length=10)
'download_tag' => string 'Tags' (length=4)
'price' => string 'Price' (length=5)
'sales' => string 'Sales' (length=5)
**'earnings' => string 'Earnings' (length=8)**
'shortcode' => string 'Purchase Short Code' (length=19)
'date' => string 'Date' (length=4)
現在我想做的事情,就是移動的「收入」之一,像這樣的第三位:
array (size=9)
'cb' => string '<input type="checkbox"/>' (length=24)
'title' => string 'Name' (length=4)
**'earnings' => string 'Earnings' (length=8)**
'download_category' => string 'Categories' (length=10)
'download_tag' => string 'Tags' (length=4)
'price' => string 'Price' (length=5)
'sales' => string 'Sales' (length=5)
'shortcode' => string 'Purchase Short Code' (length=19)
'date' => string 'Date' (length=4)
該數組的前9個元素是靜態的,因爲該順序是固定的,但如果重要的話,該數組中可能會有更多元素(在'date'後面)。
因此,我正在尋找一種簡單的方法來移動當前第三個元素位置前的第x個元素。
我曾經試過的一件事是將前2個元素保存到變量中,然後將它們取消設置。我還將收益元素設置爲變量。所以數組從第三個元素開始。然後,因爲我想我的元素提前3元的,我需要與其他2個元素回來,像這樣:
$first = $array[0];
$second = $array[1];
$earnings_element = $array['earnings'];
unset($array[0]);
unset($array[1]);
unset($array['earnings']);
array_unshift($array,$first,$second,$earnings_element);
的問題是,無論是我失去了元素的名稱(它成爲一個關鍵值1,2等)或插入返回的那些元素的值。
任何人都知道更簡單的方法?
編輯:我在下面的代碼中使用「數組」作爲數組的名稱。它不是實際數組的名稱。
的答案在這裏可能是你在找什麼:http://stackoverflow.com/questions/15540906/move-items-up-or-down-in-an -associative-array-list-php – sgroves 2013-05-07 14:01:49
'array_splice'是你的一個通用解決方案。 – Jon 2013-05-07 14:07:41