如何在PHP中按值对列表进行排序

时间:2014-03-02 22:53:37

标签: php arrays list sorting

我想从高值到低值对列表进行排序。它的输出值来自投票中的投票。

这是创建列表的代码:

function votingScore($item, $itemvoted) {
$hector=count($itemvoted);$totalvotes=0;$in=0;$stepstr='';
$totalvotes=SumArray($itemvoted);
$in=0;
if ($totalvotes==0) { $totalvotes=0.0001; }
while ($in<$hector) {
    $stepstr=$stepstr.'<li>'.stripslashes($item[$in]).(int)(($itemvoted[$in]/$totalvotes)*100).'% ';
    $stepstr=$stepstr.'</li>';
    $in++;
}
return '<ul>'.$stepstr.'</ul>'; }

投票保存在一个像这样的文本文件中: optionOne:11:optionTwo:5:

我尝试了以下操作:

arsort($stepstr);
foreach ($stepstr as $key => $val) {
echo "stepstr[" . $key . "] = " . $val . "\n"; }

FIX:

function votingScore($item, $itemvoted) {
    $combineSort = array_multisort($itemvoted, SORT_DESC, $item, SORT_DESC); //added this line and got it to work
    $hector=count($itemvoted);$totalvotes=0;$in=0;$stepstr='';

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的代码,您只需在arsort上致电$itemvoted,例如:

function votingScore($item, $itemvoted) {
    $success = arsort($itemvoted);  //Success will either be True or False 
    ....

但是,根据$itemvoted的外观(是关联的还是非关联的),您可能需要@George_Cummins所述的不同排序功能。请参阅link