(-> % read write unlearn)

My writings on this area are my own delusion

php 無名関数、コールバック

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もどんどん進化していたんだなー。

*1:試したのは、PHP Version => 5.5.9-1ubuntu4.11