//對多個數組排序
$ar1 = array("10", 100, 100, "a");
$ar2 = array(1, 3, "2", 1);
array_multisort($ar1, $ar2);
var_dump($ar1);
var_dump($ar2);
//本例中經過排序後,第一個數組將包含 "10","a",100,100。第二個數組將包含 1,1,"2",3。第二個數組中的項目順序完全和第一個數組中相應的項目(100 和 100)順序一致。
$ar = array(/*
排序順序標志:
◆sort_asc - 按照上升順序排序
◆sort_desc - 按照下降順序排序
排序類型標志:
◆sort_regular - 將項目按照通常方法比較
◆sort_numeric - 將項目按照數值比較
◆sort_string - 將項目按照字符串比較
每個數組之後不能指定兩個同類的排序標志。每個數組後指定的排序標志僅對該數組有效 - 在此之前為默認值 sort_asc 和 sort_regular
*/
function cmp($a, $b)
{
return strcmp($a["fruit"], $b["fruit"]);
}
$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";
usort($fruits, "cmp");
while (list($key, $value) = each($fruits)) {
echo "$fruits[$key]: " . $value["fruit"] . " ";
}
//看一個完善的
$data=array(
array(
'name'=>'alice',
'key'=>'2fc4ab3d639e5400efdfc73bc27e83f1',
'age'=>20
),
array(
'name'=>'claudia',
'key'=>'831c2b79c1f19af39c7e3321e11e5f5e',
'age'=>18
),
array(
'name'=>'beatrice',
'key'=>'6f8512a2066b8f35a27a495ce1228c76',
'age'=>100
),
array(
'name'=>'denise',
'age'=>25,
'key'=>'ef6de3b178bf9f69a9fef72e4ee7bbe9'
)
);
$arr1 = sortdata($data, "name","asc");
echo "<pre>";
var_dump($arr1);
echo "</pre>";
$arr2 = sortdata($data, "age","desc");
echo "<pre>";
var_dump($arr2);
echo "</pre>";
function sortdata($data, $col, $order){
if (count($data)) $temp_array[key($data)] = array_shift($data);
foreach($data as $key => $val){
$offset = 0;
$found = false;
foreach($temp_array as $tmp_key => $tmp_val){
if(!$found and strtolower($val[$col]) > strtolower($tmp_val[$col])){
$temp_array = array_merge((array)array_slice($temp_array,0,$offset),
array($key => $val),
array_slice($temp_array,$offset)
);
$found = true;
}
$offset++;
}
if(!$found) {
$temp_array = array_merge($temp_array, array($key => $val));
}
}
if (strtolower($order)=="asc"){
$array = array_reverse($temp_array);
} else {
$array = $temp_array;
}
return $array;
}
?>