Php 在数组变量中按值的降序显示结果

Php 在数组变量中按值的降序显示结果,php,mysql,arrays,sorting,Php,Mysql,Arrays,Sorting,嗨,我想知道是否有人能帮我。我创建了一份调查问卷,从调查问卷中输出了多个结果(显示为%)。我能够在results.php页面上显示这些结果,以及相应的名称($careername)和相应的链接($link)。例如,我有5个结果,每个结果链接到相应的职业和链接,这些结果显示在results.php页面上。但是,我需要结果、careername和链接按结果值的降序显示。到目前为止,它们以随机顺序显示。下面是我正在使用的代码,如果有人有任何想法,我将不胜感激 <?php $careername1

嗨,我想知道是否有人能帮我。我创建了一份调查问卷,从调查问卷中输出了多个结果(显示为%)。我能够在results.php页面上显示这些结果,以及相应的名称($careername)和相应的链接($link)。例如,我有5个结果,每个结果链接到相应的职业和链接,这些结果显示在results.php页面上。但是,我需要结果、careername和链接按结果值的降序显示。到目前为止,它们以随机顺序显示。下面是我正在使用的代码,如果有人有任何想法,我将不胜感激

<?php
$careername1 = 'Nursing '; 
$careername2 = 'Footballer ';
$careername3 = 'Dentist ';
$careername4 = 'Hairdressing ';
$careername5 = 'IT ';
?>

<?php
$link1 = '<br><a href="http://www.nhscareers.nhs.uk/explore-by-career/nursing/" target="_blank">More information on Nursing</a></br></br>';
$link2 = '<br><a href="#" target="_blank">More information on Footballing</a></br>  </br>';
$link3 = '<br><a href="#" target="_blank">More information on Dentistry</a></br></br>';
$link4 = '<br><a href="#" target="_blank">More information on Hairdressing</a></br></br>';
$link5 = '<br><a href="#" target="_blank">More information on IT</a></br></br>';
?>
<?php
$nursing = array($careername1, $result1, "% ", $link1);
$footballer = array($careername2, $result2, "% ", $link2);
$dentist = array($careername3, $result3, "% ", $link3);
$hairdresser = array($careername4, $result4, "% ", $link4);
$IT = array($careername5, $result5, "% ", $link5);
?>
<h1>Your results are listed below:</h1>

<?php
$items = array("$nursing", "$footballer", "$dentist", "$hairdresser", "$IT");
arsort($items);
foreach ($items as $key => $val) {
echo "$key = $val\n";
}
?>

您的结果如下所示:
请注意,
“$pathing”
应该是
$pathing
,等等

$items = array($nursing, $footballer,$dentist, $hairdresser,$IT);
如果这不起作用,您可能需要编写自己的
compare
函数,并将其用作
arsort
函数的第二个参数

有关更多信息,请阅读

(*编写比较函数并不像看上去那么困难)

按索引1降序排序

function compare($a, $b) {
    if ($a[1] == $b[1]) {
        return 0;
    }
    return ($a[1] < $b[1]) ? -1 : 1;
}

usort($items, 'compare');

foreach ($items as $item) {
  echo $item[1].'->'.$item[0].'<br>';;
}

尝试删除“”,但什么都没有改变:/仍然以随机顺序出现。/现在在那里尝试过,但没有任何乐趣。/我知道这很简单,但我无法理解。谢谢,它与我的结果一起工作,现在我的输出是32->足球运动员50->IT 53->理发师67->护理77->牙医如何将其更改为像牙医77%超链接?在foreach循环中,$item是一个基于0的索引数组(如$dentict等)。->回显$item[0].'.$item[1].$item[2].$item[3].
;显示顺序与索引顺序相同,因此您也可以使用echo内爆(“”,$item)。“
”;嗯,我不太清楚你的意思,你能再解释一下吗?这是PHP的新特性。感谢您的时间$items包含现在按结果值排序的5个数组($等)。在foreach($items as$item){…},$item表示当前的“结果”数组(即$dentiter、$IT等等)。例如,显示当前项目的链接值:echo$item[3];as link是每个原始数组中的第四个值。
// some test values
$nursing = array("nursing", 5, "% ", "");
$footballer = array("footballer", 15, "% ","");
$dentist = array("dentist", 25, "% ", "");
$hairdresser = array("hairdresser", 0, "% ", "");
$IT = array("IT", 50, "% ", "");

$items = array($nursing, $footballer, $dentist, $hairdresser, $IT);

foreach ($items as $item) {
 echo $item[1].'->'.$item[0].'<br>';;
}
5->nursing
15->footballer
25->dentist
0->hairdresser
50->IT
function compare($a, $b) {
    if ($a[1] == $b[1]) {
        return 0;
    }
    return ($a[1] < $b[1]) ? -1 : 1;
}

usort($items, 'compare');

foreach ($items as $item) {
  echo $item[1].'->'.$item[0].'<br>';;
}
0->hairdresser
5->nursing
15->footballer
25->dentist
50->IT