PHPのコールバック関数
phpのコールバックってほとんど使わないんですが、
usort (ユーザ定義のソート関数) でちょっと戸惑ったので覚書
まずは普通の書き方
- usort($my_arr, 'my_sort');
例.
// オリジナルソート関数
function my_sort($a, $b){
// ちなみに…
// -1 を返すと $a のが配列の先に。1 を返すと $b が先にセットされます
return ($a < $b) ? -1 : 1;
}
$my_arr = array(15, 2, 5, 7, 1, 9);
usort($my_arr, 'my_sort');
var_dump($my_arr); // 1, 2, 5, 7, 9, 15
Class内(別Classから呼び出す時)の書き方.
- usort($my_arr, array($class, 'my_sort'));
例1.
class HogeClass {
// オリジナルソート関数
public function my_sort($a, $b){
return ($a < $b) ? -1 : 1;
}
}
class FugeClass {
public function disp_sort(){
$my_arr = array(15, 2, 5, 7, 1, 9);
$cls = new HogeClass();
usort($my_arr, array($cls, 'my_sort'));
var_dump($my_arr); // 1, 2, 5, 7, 9, 15
}
}
例2.
class HogeController extends Controller {
// オリジナルソート関数
public function my_sort($a, $b){
return ($a < $b) ? -1 : 1;
}
public function disp_sort(){
$my_arr = array(15, 2, 5, 7, 1, 9);
usort($my_arr, array($this, 'my_sort'));
var_dump($my_arr); // 1, 2, 5, 7, 9, 15
}
}