だいぶ詰まってしまったのでメモ。
PHPでarray_walk_recursiveという関数があります。
これは指定した関数に、配列を再帰的に処理していくというものです。
配列の中身が多次元配列だととても重宝する関数ですが、戻り値はbooleanになっています。
つまり、
$array = array_walk_recursive($array, 'ユーザ定義関数');
としてあげても、$arrayの中身はarray_walk_recursiveが正常に終了したかどうかのtrueかfalseが入ってしまうということです。
これを解決するためには、ユーザ定義関数の引数にアンパサンド(&)をつけてあげればいいです。
&をつけることによって、ユーザ定義関数で値が変更されると、もともとの値も変更されます。
例)arrayに入っている文字列の文字コードをUTF-8に変更する
function changeCharCode(&$value, $key){ //$valueの頭にある&が重要!
$value = mb_convert_encoding($value, 'UTF-8');
}
$array = 文字列の多次元配列;
array_walk_recursive($array, 'changeCharCode'); //メソッド呼び出し