0

こんにちは、次のように array_walk を使用して配列を utf8 にエンコードする簡単な質問があります。

  array_walk($row, 'utf8_encode'); 

しかし、私はこれを警告するPHPを取得し続けます

   (PHP Warning:  Wrong parameter count for utf8_encode() ).

したがって、配列マップでは警告の問題がないため、代わりにarray_mapを使用してutf8()にエンコードしても同じ効果があるのではないかと考えていました。array_walk('utf8_encode',$row);

ありがとう。

4

4 に答える 4

1

これは、utf8_encode は 1 つのパラメーターのみを想定しているのに、 array_walk()は 2 を返すためです。次のように実行できます。

function encode_items(&$item, $key) {
    $item = utf8_encode($item);
}
array_walk($row, 'encode_items');

または警告を抑制する(良くない)

@array_walk($row, 'utf8_encode');

または、array_map()を使用することをお勧めします:

function utf8_encode_array($array) {
    return array_map('utf8_encode', $array);
}
$encoded = array_map('utf8_encode_array', $row);
于 2013-08-27T10:03:29.653 に答える
1

確かに、array_map の方が適しています。行の値のみをエンコードしたいためです。array_walkコールバック関数は、値とキーの 2 つのパラメーターを受け入れる必要があります。

キーをエンコードしないので、array_map を使用する方が効率的です。

http://php.net/manual/en/function.array-walk.php

http://www.php.net/manual/en/function.array-map.php

于 2013-08-27T10:04:50.280 に答える
0

utf8_encodeには単一のパラメーターがあります。修正:

array_walk($row, function (&$value,$key) {
    return utf8_encode($value);
}); 
于 2013-08-27T10:02:22.150 に答える
0

array_walk値とキーの 2 つのパラメータをコールバックに渡します。は1 つのutf8_encodeパラメータを期待しているため、不平を言います。コールバックに追加のパラメーターを渡さないため、ここではうまく機能します。array_map

$row = array_map('utf8_encode', $row);

そうは言っても、すべてのケースの 99% でutf8_encode使用するのは間違っています。テキストとUTF-8を扱うためのエンコーディングと文字セットについて、すべてのプログラマーが絶対に、積極的に知る必要があることを読んでください。

于 2013-08-27T10:03:54.703 に答える