用php的数组排序函数 array_multisort对从mysql数据库查出的多条记录进行排序非常简单,下面简单说明并给出一个例子。
函数的原形是array_multisort($sortKeyArray,$ascOrDesc,$sortArray),第一个参数是为了保持数组键值的对应关系需要构建的排序列数组,第二个参数是预定义的常量,SORT_ASC - 按照上升顺序排序,SORT_DESC - 按照下降顺序排序,第三个参数就是所要被排序的数组。还有一个可缺省的参数是排序的数据类型,这里略过。看一下下面的例子就会明了。
<?php
class Storage
{
function getSellList()
{
global $db;
$db->query("set names utf8");
$db->query("select * from sold_record");
while ($row=$db->get_array())
{
$array[]=$row;
}
$db->free();
return $array;
}
}
$storage=new Storage();
$sellList=$storage->getSellList();
foreach ($sellList as $key => $row)
{
$cust[$key] = $row['customer_id'];
$prod[$key] = $row['product'];
$pty[$key] = $row['ptype'];
$sdt[$key]=$row['sell_date'];
}
$asdes="yes";
if($_GET[up]=="yes")
{
$asdes="no";
$sort=SORT_DESC;
}
elseif($_GET[up]=="no")
{
$asdes="yes";
$sort=SORT_ASC;
}
switch ($_GET[order])
{
case "cname":
array_multisort($cust,$sort,$sellList);
break;
case "product":
array_multisort($prod,$sort,$sellList);
break;
case "ptype":
array_multisort($pty,$sort,$sellList);
break;
case "date":
array_multisort($sdt,$sort,$sellList);
break;
}
?>
先写到这里,稍后作修改和说明。