冒泡排序和自定義排序usort

分別使用usort和冒泡排序對數組按name的字符串長度排序數組

$arr = array(
    array('id' => 0, 'name' => '123833'),
    array('id' => 0, 'name' => 'aaa'),
    array('id' => 0, 'name' => 'albabaababa'),
    array('id' => 0, 'name' => '12356'),
    array('id' => 0, 'name' => '123abc')
);
//自定義排序usort對數組排序
function cmp($a,$b){     //$a,$b爲數組的值兩兩進行比較
    $a = strlen($a['name']);
    $b = strlen($b['name']);
    if($a == $b) return 0;  
     return $a<$b ? -1 : 1;   //返回-1則交換順序
}
usort($arr,"cmp");     //自定義排序,此處函數cmp須要加"",不然報錯,不能寫成cmp().
//冒泡排序法
for($i=0; $i<count($arr); $i++){
    for($j=0; $j<count($arr)-1; $j++){  //內層循環個數少一個
        if(strlen($arr[$j]) > strlen($arr[$j+1])){
            $tmp=$arr[$j];
            $arr[$j]=$arr[$j+1];
            $arr[$j+1]=$tmp;
        }
    }
}
echo "<pre>";
print_r($arr);
echo "</pre>";
相關文章
相關標籤/搜索