我有一个简单的字符串数组:
$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));
Uchiha的评论解决了原始数组,但我有一些更复杂的数组,它不适合。这是其他几个阵列。
$Hand2 = array("05h", "02h", "03c", "02s", "03h");
$Hand3 = array("03s", "02h", "03c", "02s", "03h");
答案 0 :(得分:0)
你可以简单地使用asort()来获得结果:
<?php
$Hand = array("05h", "02h", "03c", "02s", "04h");
asort($Hand);
print_r($Hand);
?>
希望这会有所帮助
答案 1 :(得分:0)
这可能会对您有所帮助,但它不会输出您的预期输出。您只需使用usort
功能
usort($Hand, function($a,$b) {
if((int) $a == (int) $b){
return 0;
} else {
return 1;
}
});
输出PHP&gt; = 5.5.0 - 5.6.22:
Array
(
[0] => 02s
[1] => 02h
[2] => 05h
[3] => 03c
[4] => 04h
)
答案 2 :(得分:0)
首先获取数组中每个单词的频率,然后按如下所示对数组进行排序
$hand2 = array("05h", "02h", "03c", "02h", "03h");
$freq = array_count_values($hand2);
arsort($freq);
print_r($freq);