最近、久しぶりにShift_JIS文字コードのDBが絡んだWebサイトを扱うことがあったので、その時使った小技を紹介。
キーと値の両方ともShift_JISとなっている連想配列を、一気にUTF-8へ変換するコードがこちら。
foreach($data as $key => $val) {
$newKey = mb_convert_encoding($key, 'UTF-8', 'SJIS');
unset($data[$key]);
$data[$newKey] = mb_convert_encoding($val, 'UTF-8', 'SJIS');
}
foreachでループ処理をかけ、一度文字コード変換後のキーを変数に保存。
それから元のキーを削除し、先に保存したおいた変換後のキーを振り直した配列に文字コードを変換した値を代入する。
これでキー・値のいずれもUTF-8に変換することができる。