
多次元配列でも文字コードのエンコードができる関数を
作ろうとしていますが、エラーで躓いています。
自分自身の関数を再帰で呼び出しているので、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ランキング
-
C言語の配列をPush(追加)する...
-
配列の比較
-
Tableの背景色を交互に変えたい
-
正規表現
-
ランダムの比較について
-
MYSQLとPHPによって取得する多...
-
array_uniqueについて
-
行列
-
foreachの実行結果について
-
PHPによる並べ替え(ソーティン...
-
多次元配列をエンコードする関...
-
配列の要素(value)に、変数を...
-
MySQLのデータをPHPで多次元...
-
多次元配列の重複削除
-
CArrayの要素としてCStringArra...
-
delphi 2次元配列がわかりません
-
array_intersectで空欄を比較し...
-
AならBを読み込む場合
-
空フィールドが表示されない
-
ランダム表示について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
行列
-
CArrayの要素としてCStringArra...
-
Texでの数式
-
読み(あ行~わ行)ごとに分け...
-
CArrayのソート
-
C言語 最大値と最小値を求めて...
-
fgetc関数について
-
PHPのmin関数、「1」以上の数値...
-
連想配列の文字コードを変換
-
STLのvectorで作った配列をメン...
-
C言語のchar ポインタ
-
C言語で全角文字の扱いについて
-
配列を指定した順序でソート
-
php で1から100までの素数の表...
-
delphi 2次元配列がわかりません
-
np.stack()とnp.array()の違い
-
array_intersectで空欄を比較し...
-
cakephpでのトランザクション処...
-
verilogで、配列の一部をタスク...
おすすめ情報