多次元配列でも文字コードのエンコードができる関数を
作ろうとしていますが、エラーで躓いています。
自分自身の関数を再帰で呼び出しているので、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で質問しましょう!
似たような質問が見つかりました
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- JavaScript javascriptでif文と配列を組み合わせて運賃プログラムを完成させたいです。 1 2022/07/03 14:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) ワークシートごとに計算結果 2 2022/04/30 22:00
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
スカラーのベクトル微分
-
C言語の配列をPush(追加)する...
-
forとかで連番の変数を一気に格...
-
多次元配列の重複削除
-
C言語 最大値と最小値を求めて...
-
配列の添え字が小数だとどうなる?
-
【PHP】配列のキー名の修正は可...
-
PHPでDBの複数行更新について
-
mb_encode_numericentityでタグ...
-
array_mapの再帰処理がうまく行...
-
PHPで10連ガチャを作成したいの...
-
特定の文からメールアドレスの...
-
PHPでCSVを出力するさいに、ル...
-
PHPでこのコード自体に意味は無...
-
PHPのカッコ[ ]の使い方について
-
$_SESSIONに二次元配列を使える...
-
別ファイルの構造体の値を読み...
-
postgresql関数をつかったレコ...
-
foreachのなかで次のキーを参照...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スカラーのベクトル微分
-
特定の文からメールアドレスの...
-
読み(あ行~わ行)ごとに分け...
-
ファイルの書き込みについて教...
-
php で1から100までの素数の表...
-
C言語の配列をPush(追加)する...
-
配列の要素(value)に、変数を...
-
STLのvectorで作った配列をメン...
-
C言語 最大値と最小値を求めて...
-
行列
-
verilogで、配列の一部をタスク...
-
CArrayのソート
-
PHPのセレクトボックスの初期値...
-
Perlで重複行を削除したい
-
pythonのnumpyでの繰り返しでの...
-
System.String.Splitでエラー
-
連想配列から<th>を含むテーブ...
-
2次元配列CSVのソート
-
Pager::factory()の使い方がわ...
-
【PHP】配列のキー名の修正は可...
おすすめ情報