最新最好/最簡單的辦法是:PHP:排序陣列輸出中,但隨機值相同
我有什麼:
array('100', '100', '100', '80', '70', '70', '50', '45');
輸出應該是什麼樣子:
100 (random order)
100 (random order)
100 (random order)
80
70 (random order)
70 (random order)
50
45
最新最好/最簡單的辦法是:PHP:排序陣列輸出中,但隨機值相同
我有什麼:
array('100', '100', '100', '80', '70', '70', '50', '45');
輸出應該是什麼樣子:
100 (random order)
100 (random order)
100 (random order)
80
70 (random order)
70 (random order)
50
45
根據您的要求,您可以使用usort(http://www.php.net/manual/en/function.usort.php)或uksort。如果值相等,您可以選擇隨機返回正數或負數。
嘗試是這樣的:基於aasort從 http://codepad.org/SzSeUM4u
你必須使用usort或uasort(uasort保持陣列的鍵)。使用PHP 5.3,你可以做這樣的:
shuffle($array); // randomize
uasort($array, function($a, $b){
if($a === $b) {
return rand(0, 1);
}
return $a < $b;
});
您可能不得不之前命名功能,如PHP的文檔顯示http://www.php.net/manual/fr/function.uasort.php
這聽起來不錯...我試過了,但輸出不是我的例外:theres沒有隨機現在和排序是:100,100,45,70,70 – ggzone 2012-07-18 11:53:59
是的,你需要一個shuffle()之前使用數組uasort,忘記了對不起:) – 2012-07-18 16:51:28
一個用戶定義的排序函數就足夠了,但是你必須返回-1,0或1,而不是0或1,對於相同的和不同的布爾值!試試這個: '''usort($ this - > _ ads,function($ a,$ d){if a == $ b){ return mt_rand(0,2)-1; } return ($ a> $ b)?-1:1; });''' – 2013-02-01 13:58:52
什麼是隨機輸出值相同點? – Leri 2012-07-18 09:24:24
這些值還包括像名稱和圖像這樣的數據,如果這些人沒有相同的值,則應該按照它的值和DESC順序對它們進行隨機排列 – ggzone 2012-07-18 09:28:07
如果它們具有相同的值,那麼'70'先出現在哪裏,這無關緊要嗎? – Fluffeh 2012-07-18 09:32:56