2012-12-05 37 views
0

我想要echo排序的值为$match_count。最高的数字应该在顶部。PHP内部排序

while($row = mysql_fetch_array($result)) { 
    $num_kanal = count(explode(' ', $row['kanaler'])); 

    $pr_kanal = $row['pris']/$num_kanal; 
    $pr_kanal = number_format((float)$pr_kanal, 2, '.', ''); 

    $farve = '#6a6a6a;'; 

    if ($_POST['kanaler']) { 

     $getkan = implode($_POST['kanaler'], ' '); 
     $kan = $row['kanaler']; 
     $match_count = count(TheMatch($kan, $getkan)); 
     $match = ' Match = '.$match_count; 
     } 

     // I WANT THIS ECHO TO BE SORT BY THE VALUE OF '$match_count' HIGEST NR IN TOP // 
     echo'<tr> 
      <td style="background-color:'.$farve.'"><p> 
      ' . $row['udbyder'] . ' '.$_POST['kanaler'].' 
      </p></td> 
    </tr>'; 
    } 
} 

回答

1

您必须在遍历数组的同时缓冲输出/值,对其进行排序并打印出来。事情是这样的:

$results = array(); 
while($row = ...) { 
    ... 
    $results[] = array($match_count, '<tr><td style="background-color:...</tr>'); 
} 

uasort($results, my_comp); 

foreach($results as $result) 
    echo $result[1]; 

这将数组排序,然后打印在此基础上排序功能:

function my_comp($left, $right) { 
    return $left[0] > $right[0]; // to be honest I'm not 100% sure right now whether you'd need <or> for the right sorting order 
} 
0

你也能使用在array_multisort:

<?php 
array_multisort($match_count, SORT_DESC, $array_values_to_print); 

foreach ($match_count as $result) { 
    echo '<tr><td style="background-color:...</tr>'; 
} 
?> 

第一阵列确定该指数。