我的數組只包含一組特定的字符。但是,這些字符可以以任何順序出現在數組中。Order Array Results
我想重新排列這個數組,使它們始終處於相同的順序。
這是可能的,因爲有些時候數組可能包含1個條目,其他時間最多4個條目可能更多。
可能出現在數組中的字符將爲()^& ! #
但是我不知道在提交表單之前按什麼順序。
理想的情況下,我總是希望他們是按以下順序:
! #^& ()
這可能嗎?
感謝
我的數組只包含一組特定的字符。但是,這些字符可以以任何順序出現在數組中。Order Array Results
我想重新排列這個數組,使它們始終處於相同的順序。
這是可能的,因爲有些時候數組可能包含1個條目,其他時間最多4個條目可能更多。
可能出現在數組中的字符將爲()^& ! #
但是我不知道在提交表單之前按什麼順序。
理想的情況下,我總是希望他們是按以下順序:
! #^& ()
這可能嗎?
感謝
嘗試這樣的事情
// establish the sort order
$order = array("!","#", "^", "&", "(",")");
// usort with indexes of $orderArray
usort($arr, function($a, $b) use($order) {
$aIdx = array_search($a, $order);
$bIdx = array_search($b, $order);
return $aIdx - $bIdx;
});
你可以使用內置的PHP排序功能之一,根據您的要求。
大概兩個你最感興趣的是
雖然,也有相當多的人 - 請參閱Sorting Arrays從PHP手冊
,或者,如果得到的排序順序不匹配你渴望什麼,你可以使用,它允許你定義自定義排序函數
像這樣的東西應該工作
$arrayToSort = array('#','&','()','^','!');
$order = array('!', '#', '^', '&', '()');
function compare($a,$b) {
global $order;
$indexa = array_search($a,$order);
$indexb = array_search($b,$order);
return ($indexa < $indexb) ? -1 : 1;
}
usort($arrayToSort, $compare);
這在功能上與我的方法相同。你的方法優於我的,更容易閱讀。我的方法的優點可以生活在一個功能,而不會混淆全局名稱空間。也不使用全局關鍵字。 – Orangepill
謝謝,我該如何使用它。它與PHP 4兼容嗎? 我運行這個的網絡設備只支持php 4! – MacMan
完全同意..我正在編輯我的帖子。我喜歡你的代碼。它看起來非常乾淨。雙加使用匿名功能。 另外,yeh asort,usort都在php 4中工作。 –
這是可能的,但是PHP使得比大多數語言困難了很多。 – Antimony
我不知道窗體是什麼樣子,但也許你可以在那裏使用一個數組並分配固定的鍵。這樣他們將始終以相同的順序**和**始終具有相同的密鑰。 – jeroen
我將如何分配固定鍵? – MacMan