PHPの匿名関数のメモ(多次元配列のソート)

10月 31st, 2008 admin Posted in PHP |

最近存在を知ってからよく使うのだけど、何度も忘れて検索するのでメモ
2次元配列とかでソートしたいときに便利

PHP:
  1. $langs = array(
  2.          array("name" => "php","age" => "13"),
  3.          array("name" => "ruby","age" => "15")
  4.        );

↑これのageでソートしたいって時が結構ある
まず普通はusortとユーザ定義関数でやる

PHP:
  1. function sortByAge($a,$b){
  2.   return $a["age"]> $b["age"];
  3. }
  4. usort($langs,"sortByAge");

これでOK。だけどなんだか関数の定義が面倒くさい。
んで、そんなときにusortとphpの匿名関数であるcreate_functionを使うとすっきりかける

PHP:
  1. usort($langs, create_function('$a,$b','return $a["age"]> $b["age"];'));

これだけで$langsがageでソートされるので便利。

まとめ

・PHPよりRubyが年上なのが少し驚いた
・匿名関数と無名関数。どちらの言い方が正しいのか知りたい。

Leave a Reply