二维数组的排序方法
时间:2006-08-01 来源:一地风飞
如果数据来此非数据库渠道(如xml),却又需要按字段排序,可以用以下方法:
$user =array(
array('name' => 'kitty','age'=> 25),
array('name' => 'carfield', 'age' => 27),
array('name' => 'benben', 'age' => 23)
);
foreach($user as $re) $sortData[] = $re['age']; //按age字段排,如果是按第一个字段排(这里是name),可以直接用sort或ksort
array_multisort($sortData, SORT_DESC, $user); //要升序,将SORT_DESC改成SORT_ASC;
下面是多字段排序的方法,类似数据库的order by xx desc,yy asc
原数据:
$oldArr = array(
array('age'=>23,'name'=>'apple','height'=>176),
array('age'=>22,'name'=>'boy','height'=>169),
array('age'=>25,'name'=>'cat','height'=>166)
);
foreach ($oldArr as $key => $row) {
$age[$key] = $row['age'];
$name[$key] = $row['name'];
$height[$key] = $row['height'];
}
array_multisort($age, SORT_DESC, $name, SORT_ASC, $height,SORT_ASC,$oldArr);//先按age,降序,再按name升,再按height升,如此类推
?>
$user =array(
array('name' => 'kitty','age'=> 25),
array('name' => 'carfield', 'age' => 27),
array('name' => 'benben', 'age' => 23)
);
foreach($user as $re) $sortData[] = $re['age']; //按age字段排,如果是按第一个字段排(这里是name),可以直接用sort或ksort
array_multisort($sortData, SORT_DESC, $user); //要升序,将SORT_DESC改成SORT_ASC;
下面是多字段排序的方法,类似数据库的order by xx desc,yy asc
原数据:
$oldArr = array(
array('age'=>23,'name'=>'apple','height'=>176),
array('age'=>22,'name'=>'boy','height'=>169),
array('age'=>25,'name'=>'cat','height'=>166)
);
foreach ($oldArr as $key => $row) {
$age[$key] = $row['age'];
$name[$key] = $row['name'];
$height[$key] = $row['height'];
}
array_multisort($age, SORT_DESC, $name, SORT_ASC, $height,SORT_ASC,$oldArr);//先按age,降序,再按name升,再按height升,如此类推
?>
相关阅读 更多 +