
多次元配列でも文字コードのエンコードができる関数を
作ろうとしていますが、エラーで躓いています。
自分自身の関数を再帰で呼び出しているので、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の問い合わせフォームを作っ...
-
reuterの記事をbeautiful.soup....
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
Q&Aサイトを作成していてURLの...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
[php初心者]サイトを見てデータ...
-
phpに関わる所での、form actio...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
cakephpでのトランザクション処...
-
行列
-
読み(あ行~わ行)ごとに分け...
-
特定の文からメールアドレスの...
-
c言語 単位行列
-
STLのvectorで作った配列をメン...
-
多次元配列をエンコードする関...
-
2次元配列を1次元配列にするには
-
phpで、配列の値が意図せず変わ...
-
Delphiで別unitで宣言した「TAr...
-
連想配列に追加ってできるン?
-
正規表現
-
配列の並びについて
-
PHPでCSVを出力するさいに、ル...
-
pascalについて知りたいのです...
-
文字列の取得について
-
ファイルの書き込みについて教...
-
数独かを判断するプログラム
-
文字列の並び替え
おすすめ情報