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");
这里,user
Veronica
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打印为输出字符串,因为如果按描述顺序排序的字母表仍然不确定我是否理解,它将排在最后,但是现在有很多选择。你放弃了还是怎么了?