
多次元配列でも文字コードのエンコードができる関数を
作ろうとしていますが、エラーで躓いています。
自分自身の関数を再帰で呼び出しているので、array_map関数上?
引数が1つしか持てないので、$valueを array($ary, "SJIS", "EUC-JP")として渡しています。
これを実行すると、以下のエラーになります。
何かよい方法はありますか?
PHP Notice: Undefined offset: 0 in C:\test.php on line 10
function mb_convert_encoding_deep($value)
{
//var_dump($value);
if( is_array($value) ){
if( is_array($value[0]) ){
array_map(__FUNCTION__, $value);
}else{
$value[0] = mb_convert($value[0], $value[1], $value[2]);
}
}else{
die("ここは通過しないと思いますが自信なし");
}
return $value;
}
$ary = mb_convert_encoding_deep( array($ary, "SJIS", "EUC-JP") );
array_mapの用法でも間違っているのでしょうか?

No.2ベストアンサー
- 回答日時:
ANo.1のものです。
mb_convert_variables という関数がありました。
これを使えば一発でした。
ただし、これも連想配列のキーは変換しないようです。
参考URL:http://jp.php.net/manual/ja/function.mb-convert- …

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を使う手はあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのheader("Location:#pos")...
-
フォームで戻った際に入力済み...
-
SplFileObject を利用したとき...
-
csvファイルについて教えて下さ...
-
PHP8でWarning:Undefined varia...
-
PHPSpreadsheetによる書き出し...
-
PHPの変わった閉じタグの必要性...
-
セッション関数を使わずにファ...
-
composerをインストールしたい...
-
phpの問い合わせフォームを作っ...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
CArrayのソート
-
再帰関数を用いて配列の合計を...
-
行列
-
CArrayの要素としてCStringArra...
-
プログラミングのPythonのnoteb...
-
スカラーのベクトル微分
-
cakephpでのトランザクション処...
-
文字列の抜き出し(PHP)
-
pg_copy_fromの使い方について...
-
【PHP】配列のキー名の修正は可...
-
np.stack()とnp.array()の違い
-
PHPは何故値渡しより参照渡しの...
-
多次元配列をソートする綺麗な...
-
配列の要素(value)に、変数を...
-
タグの中身だけを取り出す正規
-
PHPのmin関数、「1」以上の数値...
-
fgetc関数について
-
テキストエリアに入力した複数...
-
配列の添え字が小数だとどうなる?
おすすめ情報