- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:多次元配列をエンコードする関数を作るには?)
多次元配列をエンコードする関数の作成方法は?
このQ&Aのポイント
- 多次元配列でも文字コードのエンコードができる関数の作成方法について教えてください。
- 現在、自身の関数を再帰的に呼び出しているためにエラーが発生しています。array_map関数の引数の数に問題があるのか、他に効果的な方法があるのか教えてください。
- また、mb_convert_encoding_deep関数を実行すると、指定したエラーが発生してしまいます。この問題を解決する方法についても教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1のものです。 mb_convert_variables という関数がありました。 これを使えば一発でした。 ただし、これも連想配列のキーは変換しないようです。
その他の回答 (1)
- fdsjaklfjas
- ベストアンサー率81% (96/118)
回答No.1
昔、同じようなものを作ったことがあります。 以下のものです。これは、連想配列のキーのエンコードは変換しません。 function CharEncConv($val, $toenc, $fromenc) { $ret = null; if (is_array($val)) { foreach ($val as $k => $v) { $ret[$k] = call_user_func(__FUNCTION__, $v, $toenc, $fromenc); } } elseif (is_string($val)) { $ret = mb_convert_encoding($val, $toenc, $fromenc); } else { $ret = $val; } return $ret; } > array_mapの用法でも間違っているのでしょうか? そもそもarray_mapは多次元配列には使用できません。 mb_convert_encoding_deep関数の、var_dumpのコメントアウトを解除すれば、何が起こっているのか大体わかると思います。 array_walk_recursiveを使う手はあります。