めも。
// 配列の要素を操作したい場合は$valueを参照渡ししなければならないので注意 function myCallback(&$value, $key) { $value .= '__'; } $array = array('hoge', 'piyo', 'fuga', 'foo','bar','baz'); array_walk_recursive($array, 'myCallback'); var_dump($array); ↓ array(6) { [0]=> string(6) "hoge__" [1]=> string(6) "piyo__" [2]=> string(6) "fuga__" [3]=> string(5) "foo__" [4]=> string(5) "bar__" [5]=> string(5) "baz__" }
ちなみに上記の例ではコールバック関数をグローバルで定義したが、クラス内のfunctionを指定することも可能。
その場合array_walk_recursive()の第二引数には配列を渡す。
class hogehoge { protected function inClassCallback(&$value, $key) { $value .= '__inClass'; } public function piyopiyo() { $array = array('hoge', 'piyo', 'fuga', 'foo','bar','baz'); array_walk_recursive($array, array('self', 'inClassCallback')); var_dump($array); } } ↓ array(6) { [0]=> string(13) "hoge__inClass" [1]=> string(13) "piyo__inClass" [2]=> string(13) "fuga__inClass" [3]=> string(12) "foo__inClass" [4]=> string(12) "bar__inClass" [5]=> string(12) "baz__inClass" }
自分自身のクラス内関数なので「array(‘self’, ‘functionName’)」とすればよい。
他のクラスを指定したければ「array(‘otherClassName’, ‘functionName’)」。
継承元の親クラスを指定したければ「array(‘parent’, ‘functionName’)」とかも出来たりする。