Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 排序数组:倒数第二 ksort(票数); foreach($总票数=>$参赛者){ $ordervotes[]=$Competitor; } echo“获胜者是:{$ordervoces[4]}”; echo“而失败者是:{$ordersoves[0]}”; echo“{$orderavots[1]}排在倒数第二位;_Php - Fatal编程技术网

Php 排序数组:倒数第二 ksort(票数); foreach($总票数=>$参赛者){ $ordervotes[]=$Competitor; } echo“获胜者是:{$ordervoces[4]}”; echo“而失败者是:{$ordersoves[0]}”; echo“{$orderavots[1]}排在倒数第二位;

Php 排序数组:倒数第二 ksort(票数); foreach($总票数=>$参赛者){ $ordervotes[]=$Competitor; } echo“获胜者是:{$ordervoces[4]}”; echo“而失败者是:{$ordersoves[0]}”; echo“{$orderavots[1]}排在倒数第二位;,php,Php,当“$total”中的任何一个都不相同时,这可以正常工作,如果它们相同,我会得到一个错误代码。我意识到我可以使用“max/min”来获取数组的第一个和最后一个元素,但是如何找到第二个和最后一个元素呢 多谢各位 Joe使用以下方法: ksort ($votes); foreach ($votes as $total => $contestant){ $ordervotes[]= $contestant; } echo "&l

当“$total”中的任何一个都不相同时,这可以正常工作,如果它们相同,我会得到一个错误代码。我意识到我可以使用“max/min”来获取数组的第一个和最后一个元素,但是如何找到第二个和最后一个元素呢

多谢各位

Joe

使用以下方法:

ksort ($votes);
        foreach ($votes as $total => $contestant){
        $ordervotes[]= $contestant;
        } 

        echo "<li> And the winner is: {$ordervotes[4]}</li>";
        echo "<li> And the loser is: {$ordervotes[0]}</li>";
        echo "<li> {$ordervotes[1]} came second last</li>";
用法:

$second=secondMax(票数)

使用以下命令:

ksort ($votes);
        foreach ($votes as $total => $contestant){
        $ordervotes[]= $contestant;
        } 

        echo "<li> And the winner is: {$ordervotes[4]}</li>";
        echo "<li> And the loser is: {$ordervotes[0]}</li>";
        echo "<li> {$ordervotes[1]} came second last</li>";
用法:


$second=secondMax(票数)

您可以使用函数count检索它:

function secondMax($arr) {
    $max = $second = 0;
    $maxKey = $secondKey = null;

    foreach($arr as $key => $value) {
        if($value > $max) {
            $second = $max;
            $secondKey = $maxKey;
            $max = $value;
            $maxKey = $key;
        } elseif($value > $secondMax) {
            $second = $value;
            $secondKey = $key;
        }
    }

    return array($secondKey, $second);
}

您可以使用函数count检索它:

function secondMax($arr) {
    $max = $second = 0;
    $maxKey = $secondKey = null;

    foreach($arr as $key => $value) {
        if($value > $max) {
            $second = $max;
            $secondKey = $maxKey;
            $max = $value;
            $maxKey = $key;
        } elseif($value > $secondMax) {
            $second = $value;
            $secondKey = $key;
        }
    }

    return array($secondKey, $second);
}
你为什么不试试:

$ordervotes[ (count($ordervotes)-2) ]
// the array starts with index 0, so (count($ordervotes)-1) is the last element
您也不需要用相同的值填充另一个数组-您可以将它们保存在
$vowers
中。您可能还希望对数组进行排序,而不是(我假设您正在尝试这样做)


如果需要重复的密钥,则需要重新设计存储数据的方式。考虑使用多维数组:

echo $votes[count($votes)-2];
您可以使用以下函数和代码对此数组进行排序:

$votes = array(
   array('name'=>'John','vote'=>10),
   array('name'=>'James','vote'=>11),
   array('name'=>'Jimmy','vote'=>13),
);
你为什么不试试:

$ordervotes[ (count($ordervotes)-2) ]
// the array starts with index 0, so (count($ordervotes)-1) is the last element
您也不需要用相同的值填充另一个数组-您可以将它们保存在
$vowers
中。您可能还希望对数组进行排序,而不是(我假设您正在尝试这样做)


如果需要重复的密钥,则需要重新设计存储数据的方式。考虑使用多维数组:

echo $votes[count($votes)-2];
您可以使用以下函数和代码对此数组进行排序:

$votes = array(
   array('name'=>'John','vote'=>10),
   array('name'=>'James','vote'=>11),
   array('name'=>'Jimmy','vote'=>13),
);

我不明白您的
$vowers
变量中有什么。。。你怎么可能有多个选手拥有相同的选票(因此,使用相同的密钥)

我想这是个错误

你应该这样做:

// This function will sort your array
function aasort (&$array, $key) {
    $sorter=array();
    $ret=array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
        $ret[$ii]=$array[$ii];
    }
    $array=$ret;
}

// Sort the array by the 'vote' key
aasort($votes,"vote");

// Echo out the name of the second-last person
echo $votes[count($votes)-2]['name'];
然后对数组进行排序:
sort($vots)


最后,获得倒数第二名:
$voces[count($voces)-2]

我不明白您的
$vowers
变量中有什么。。。你怎么可能有多个选手拥有相同的选票(因此,使用相同的密钥)

我想这是个错误

你应该这样做:

// This function will sort your array
function aasort (&$array, $key) {
    $sorter=array();
    $ret=array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
        $ret[$ii]=$array[$ii];
    }
    $array=$ret;
}

// Sort the array by the 'vote' key
aasort($votes,"vote");

// Echo out the name of the second-last person
echo $votes[count($votes)-2]['name'];
然后对数组进行排序:
sort($vots)



最后,获得倒数第二名:
$voces[count($voces)-2]

@WayneWhitty这只是一个猜测,但我认为数组元素在某些情况下可能没有定义。为什么要浪费宝贵的时间进行排序?O(NlogN)?Max是O(N)@WayneWhitty这只是一个猜测,但我认为数组元素在某些情况下可能没有定义。为什么要浪费宝贵的时间排序?O(NlogN)?Max是O(N)为什么要浪费宝贵的时间排序?O(NlogN)?Max是O(N)。OP没有说他在使用关联数组。他将数组值作为字符串(或任何非基于数组的内容)进行回显,如果$total相同,这将不起作用。它给出了一个错误代码。另外,我不需要投票数,我需要的是参赛者的名字。这看起来应该行得通,但我正努力让我的脑袋转过来。对不起,我是初学者!尝试实施它,如果您遇到困难,请告诉我们。您所做的只是更改数组的结构方式,并使用函数对其进行排序。不要担心函数看起来有多复杂,为什么要浪费宝贵的时间进行排序?O(NlogN)?Max是O(N)。OP没有说他在使用关联数组。他将数组值作为字符串(或任何非基于数组的内容)进行回显,如果$total相同,这将不起作用。它给出了一个错误代码。另外,我不需要投票数,我需要的是参赛者的名字。这看起来应该行得通,但我正努力让我的脑袋转过来。对不起,我是初学者!尝试实施它,如果您遇到困难,请告诉我们。您所做的只是更改数组的结构方式,并使用函数对其进行排序。不要担心函数看起来有多复杂,为什么要浪费宝贵的时间进行排序?O(NlogN)?Max是O(N)。@JoeAustin我不明白,在你的例子中,你把$Competitor放在$ordervotes中,我的行greps放在倒数第二位(如果其中至少有两个元素)。对不起,我错了。试着让我的头绕过它。谢谢你的意见。为什么要浪费宝贵的时间来分类呢?O(NlogN)?Max是O(N)。@JoeAustin我不明白,在你的例子中,你把$Competitor放在$ordervotes中,我的行greps放在倒数第二位(如果其中至少有两个元素)。对不起,我错了。试着让我的头绕过它。感谢您的输入。$vots=array($joe=>“参赛者1”、$colm=>“参赛者2”、$eoin=>“参赛者3”、$cian=>“参赛者4”、$john=>“参赛者5”);这是投票数,而不是参赛者的名字我真的不明白你的$vows。。。od$joe$colm的价值是多少?票数?如果两票相同呢?不能对数组使用非唯一键。$voces=array($joe=>“参赛者1”、$colm=>“参赛者2”、$eoin=>“参赛者3”、$cian=>“参赛者4”、$john=>“参赛者5”);这是投票数,而不是参赛者的名字我真的不明白你的$vows。。。od$joe$colm的价值是多少?票数?如果两票相同呢?不能对数组使用非唯一键。