PHP7.2からmb_convert_encoding()で配列がサポートされていた
PHP7.2からmb_convert_encoding()
で配列がサポートされていました。
PHP: mb_convert_encoding – Manual
<?php
$arr = mb_convert_encoding($arr, 'UTF-8', 'ASCII, JIS, UTF-8, SJIS');
勿論、連想配列にも対応しており配列のキーの文字化けも修正してくれます。
PHP<=7.1までは、文字列しか対応しておらず、mb_convert_variables()
を使用するか以下のようなヘルパー関数を作成しないと行けなかったのでかなり楽になりますし、組み込み関数を使用すれば処理速度も上がっていい感じです。
<?php
function convertToUTF8($data) {
if (!is_array($data)) {
return mb_convert_encoding($data, 'UTF-8', 'UTF-8, SJIS-win, SJIS, ASCII');
}
foreach ($data as $key => $value) {
$reKey = mb_convert_encoding($key, 'UTF-8', 'UTF-8, SJIS-win, SJIS, ASCII');
unset($data[$key]);
$data[$reKey] = convertToUTF8($value);
}
return $data;
}