發表文章

目前顯示的是 8月, 2021的文章

[PHP] 陣列的排序函式

圖片
效果 昇冪 降冪 使用者定義的順序 依值排序,然後重新指定從0開始的索引 sort() rsort() usort() 依值排序 asort() arsort() uasort() 依鍵排序 ksort() krsort() uksort() 備註:上面的排序法已經可以解決大部分的問題,PHP還有提供另一種非常符合人性的自然排序法,有分大小寫的natsort()與不分大小寫的natcasesort()兩種,如下: $arr = array("temp15.txt","Temp10.txt","temp1.txt","Temp22.txt","temp2.txt"); sort($arr); //基礎排序 無法正確排序帶文字的數字 eg. 1.jpg 10.jpg 2.jpg print_r($arr); natsort($arr); //自然排序 有區分大小寫 print_r($arr); natcasesort($arr); //自然排序 不區分大小寫 print_r($arr);

[PHP] 匿名函式(又稱閉包closure) 引用外部變數時,使用 global 與 use 的差異

以 usort() 來舉例,使用匿名函式的寫法如下... $array = array(200, 300, 100); usort($array, function($a, $b) { return $a > $b; }); print_r($array); //Array ( [0] => 100 [1] => 200 [2] => 300 ) 如果我們想用一個變數($bln)去決定升冪或降冪,寫法可以有以下兩種... 使用 global : $array = array(200, 300, 100); $bln = 1; usort($array, function($a, $b) { global $bln; if ($bln) { return $a $b; } }); print_r($array); //Array ( [0] => 300 [1] => 200 [2] => 100 ) 使用 use : $array = array(200, 300, 100); $bln = 1; usort($array, function($a, $b) use($bln) { if ($bln) { return $a $b; } }); print_r($array); //Array ( [0] => 300 [1] => 200 [2] => 100 ) 用 global 與 use 結果是相同的,但如果我們多包一層function的時候... $array = array(200, 300, 100); $bln = 1; function mysort($array) { $bln = 0; usort($array, function($a, $b) use($bln) { if ($bln) { return $a $b; } }); return $array; } $array = mysort($array); print_r($ar...