http://d.hatena.ne.jp/seto-san/20081203/1228274418
にありました。
以下引用。(クラスメソッドとして記述してあるので、通常の関数として使用したい場合は)
$target[$key] = $this->_mbConvertEncodingEx($val,$toEncoding,$fromEncoding); ↓ $target[$key] = _mbConvertEncodingEx($val,$toEncoding,$fromEncoding);
とするとよいでしょう。
/** * mb_convert_encoding()の拡張 * * @param mixed $target arrayかstring * @param string $toEncoding エンコード先 * @param string $fromEncoding エンコード元(default:null) * @return mixed arrayが来たらarrayを、stringが来たらstringを */ function _mbConvertEncodingEx($target, $toEncoding, $fromEncoding = null) { if (is_array($target)) { foreach ($target as $key => $val) { if (is_null($fromEncoding)) { $fromEncoding = mb_detect_encoding($val); } $target[$key] = $this->_mbConvertEncodingEx($val,$toEncoding,$fromEncoding); } } else { if (is_null($fromEncoding)) { $fromEncoding = mb_detect_encoding($target); } $target = mb_convert_encoding($target, $toEncoding,$fromEncoding); } return $target; }