PHP-按逆字母顺序对数组值进行排序并返回输出字符串
输入数组PHP-按逆字母顺序对数组值进行排序并返回输出字符串,php,arrays,sorting,Php,Arrays,Sorting,输入数组 $userArr = array("0"=>"Veronica", "1"=>"Alex", "2"=>"Joe", "3"=>"Alex", "4"=>"Veronica"); 这里,userVeronica和Alex重复两次。即使两个用户的计数相同,即Veronica=>2,Alex=>2,我如何在数组上方按逆字母顺序排序,只有Veronica将显示为输出字符串 $userArr = array("0"=>"Veronica", "1"=>
$userArr = array("0"=>"Veronica", "1"=>"Alex", "2"=>"Joe", "3"=>"Alex", "4"=>"Veronica");
这里,userVeronica
和Alex
重复两次。即使两个用户的计数相同,即Veronica=>2,Alex=>2,我如何在数组上方按逆字母顺序排序,只有Veronica
将显示为输出字符串
$userArr = array("0"=>"Veronica", "1"=>"Alex", "2"=>"Joe", "3"=>"Alex", "4"=>"Veronica");
$userCnt = array_count_values($userArr);
foreach ($userCnt as $key => $val) {
echo "$key = $val\n";
}
输出:
Veronica
$userArr = array("0"=>"Veronica", "1"=>"Alex", "2"=>"Joe", "3"=>"Alex", "4"=>"Veronica");
echo count($userArr);
arsort($userArr);
print_r($userArr);
您的输入数组:
Veronica
$userArr = array("0"=>"Veronica", "1"=>"Alex", "2"=>"Joe", "3"=>"Alex", "4"=>"Veronica");
echo count($userArr);
arsort($userArr);
print_r($userArr);
数组计数:
Veronica
$userArr = array("0"=>"Veronica", "1"=>"Alex", "2"=>"Joe", "3"=>"Alex", "4"=>"Veronica");
echo count($userArr);
arsort($userArr);
print_r($userArr);
数组的反转:
Veronica
$userArr = array("0"=>"Veronica", "1"=>"Alex", "2"=>"Joe", "3"=>"Alex", "4"=>"Veronica");
echo count($userArr);
arsort($userArr);
print_r($userArr);
试试这个:
$userArr = array(
"0"=>"Veronica",
"1"=>"Alex",
"2"=>"Joe",
"3"=>"Alex",
"4"=>"Veronica");
//below line will first create an associative array with
//values as keys and their count as the value...
$arrayVals = array_count_values($userArr);
//next we sort this array in reverse alphabetically...
krsort($arrayVals);
//finally, print it :)
print_r($arrayVals);
//will print...
Array
(
[Veronica] => 2
[Joe] => 1
[Alex] => 2
)
更新:根据OP的解释,我认为他想要数组中“最后一个”字母的值。如果是这样的话,下面的代码应该可以做到这一点:
$userArr = array("0"=>"Veronica", "1"=>"Alex", "2"=>"Joe", "3"=>"Alex", "4"=>"Veronica");
rsort($userArr);
echo current($userArr);
使用您的方法,我假设您想要的是计数最高的,也是按字母顺序排列的最后一个:
$userArr = array("0"=>"Veronica", "1"=>"Alex", "2"=>"Joe", "3"=>"Alex", "4"=>"Veronica");
$userCnt = array_count_values($userArr);
ksort($userCnt);
$count = 0;
foreach ($userCnt as $key => $val) {
if($val >= $count) {
$result = $key;
$count = $val;
}
}
echo "$result appeared $count times";
- 计算数值
- 按键排序(名称)
- 循环并检查计数(
$val
)是否大于或等于上一个
你的新评论似乎更简单。对原件进行排序,并根据排序顺序抓取第一个或最后一个:
rsort($userArr);
echo current($userArr);
//or
sort($userArr);
echo end($userArr);
如果出于任何原因需要数组\u计数\u值()
:
$userCnt = array_count_values($userArr);
krsort($userCnt);
echo key($userCnt);
只有Veronica
应显示为输出字符串。然后只需回显第一项echo$arrayVals[0];如果您将Xavier
添加到列表中,那么它将首先添加,即使只有1个,它仍然应该是Veronica
@slimshaddyyy:对不起,我不理解您的要求。是否只打印第一项?是否要计数大于2的第一个项目?你只是想把“Veronica”印出来吗?我不明白你在这里想做什么…我可能会重新措辞这个问题,但输出应该打印给定数组中按字母顺序排在最后的任何名称。例如,Vernonica出现两次,alex也出现两次,但它应该将Vernonica打印为输出字符串,因为如果按描述顺序排序的字母表仍然不确定我是否理解,它将排在最后,但是现在有很多选择。你放弃了还是怎么了?