PHPって無名関数もあるし、コールバックもできることを知りました。*1
<?php $ary = json_decode('["val01", "val02", ["val03-a", "val03-b"]]'); array_walk_recursive($ary, function (&$v) { $v = strtoupper($v); }); echo json_encode($ary, ); //=> ["VAL01","VAL02",["VAL03-A","VAL03-B"]] ?>
function (&$v) { $v = strtoupper($v); }
の部分が無名関数。
この代わりにcreate_function('&$v', '$v = strtoupper($v);')
でもいける。
create_functionは、単にevalしてるようなので、無名関数で書いたほうが安全性もパフォーマンスも良いと思う。
PHPもどんどん進化していたんだなー。