2016-06-10 19 views
0

我有一個簡單的字符串數組:類似的串組數組項

$Hand = array("05h", "02h", "03c", "02s", "04h"); 

這裏就是我想用它做:

如果號碼出現不止一次,那麼組數在數組的開始。所以,我的最終結果將是:

$Hand = array("02h", "02s", "05h", "03c", "04h"); 

下面是我從其他的答案至今拼湊在一起,但我不知道如何使作品共同努力實現我的目標。

$Hand = array("05h", "02h", "03c", "02s", "04h"); 

rsort($Hand,SORT_NUMERIC); 

print_r ($Hand); 

echo "<br>"; 

function myfunction($Card) 
{ 
return(substr($Card,0,2)); 
} 

$CountedHand = array_count_values(array_map("myfunction",$Hand)); 
asort($CountedHand); 
print_r(array_reverse($CountedHand)); 

宇智波的評論解決了原有的陣列,但我有一對夫婦更復雜的陣列,它不適合很好地工作。這裏有一些其他數組。

$Hand2 = array("05h", "02h", "03c", "02s", "03h"); 
$Hand3 = array("03s", "02h", "03c", "02s", "03h"); 

回答

0

您可以簡單地使用ASORT()的結果:

<?php 
    $Hand = array("05h", "02h", "03c", "02s", "04h"); 
    asort($Hand); 
    print_r($Hand); 
    ?> 

希望這將有助於

+0

這確實對它們進行排序,但我需要將重複項放置在beginn陣列。我不是簡單地尋找一個排序的數組。不過謝謝。 – user3060512

0

這可能會幫助你,但它不輸出作爲您的預計產量。你可以簡單地使用usort功能

usort($Hand, function($a,$b) { 
    if((int) $a == (int) $b){ 
     return 0; 
    } else { 
     return 1; 
    } 
}); 

輸出PHP> = 5.5.0 - 22年6月5日:

Array 
(
    [0] => 02s 
    [1] => 02h 
    [2] => 05h 
    [3] => 03c 
    [4] => 04h 
) 

Demo

+0

這是朝正確方向邁出的一步。我嘗試點擊Up投票,但沒有發生任何事情。無論如何,它適用於我上面提供的一個場景,但我添加了一些其他場景,它沒有正確排序。這確實給了我一些工作。謝謝。 – user3060512

0

首先獲得每個單詞的頻率在陣列中,然後排序像下面的陣列

$hand2 = array("05h", "02h", "03c", "02h", "03h"); 
$freq = array_count_values($hand2); 
arsort($freq); 
print_r($freq); 
+0

對不起,但這只是創建了每個項目出現次數的新陣列。 – user3060512