3

これはなぜでしょう

$trader_details = array_walk($trader_details, 'htmlspecialchars');

このエラーを出しますか?

Severity: Warning
Message: htmlspecialchars() expects parameter 2 to be long, string given

afaik htmlspecialchars には、入力文字列とは別にオプションのパラメーターしかありませんか? これはcodeigniterで実行されています

どうも

4

7 に答える 7

2

に渡されるコールバック関数array_walkは、2 番目のパラメーターが配列要素のキーであることを想定しています。

通常、funcnameは 2 つのパラメーターを取ります。配列パラメーターの値が最初で、キー/インデックスが 2 番目です。

ただしhtmlspecialchars、2 番目のパラメーターは引用スタイル (通常は整数型のENT_*定数の 1 つによって指定される) であると想定しています。

array_map代わりに試してください。配列の値を使用するだけです。

于 2009-08-22T21:17:49.243 に答える
2

array_walk はデフォルトで 2 つの引数を渡します。1 つ目は配列項目の値、2 つ目は配列項目のキーです。配列キーを htmlspecialchars の 2 番目の引数として渡そうとしています。これは、2 番目の引数が使用する引用スタイルを定義する整数であると想定しています。

于 2009-08-22T21:19:53.437 に答える
1

http://uk.php.net/array_walk言います:

funcname
通常、funcname は 2 つのパラメーターを取ります。配列パラメーターの値が最初で、キー/インデックスが 2 番目です。

おそらくaray_mapを探しているでしょう。また、htmlspecialchars() は、デフォルトでエンコードとして iso-8859-1 を使用することに注意してください。出力がたとえば utf-8 でエンコードされている場合、その情報を 3 番目のパラメーターとして htmlspecialchars に渡す必要があります。そうしないと、結果が間違っている可能性があります。
PHP 5.3:

$foo = array_map(
  function($x) { return htmlspecialchars($x, ENT_QUOTES, 'utf-8'); },
  $trader_details
);
于 2009-08-22T21:20:46.600 に答える
0

$trader_details は文字列の配列だと思いますか? htmlspecialchars () の 2 番目のパラメーターは整数型で、特定の引用スタイルが使用されます。

おそらくarray_mapを使用したいと思うでしょう。$trader_details が 2 次元配列の場合は、投稿してください。あなたが何をしようとしているのかを確認できます。

于 2009-08-22T21:20:49.860 に答える
0

array_walk は 2 つの引数をメソッド (htmlspecialchars) に渡します。1 つ目は現在の配列要素の値、2 つ目は現在の要素のキーです。

だから、もし

$trader_details = array('key' => 'value');

それから

$trader_details = array_walk($trader_details, 'htmlspecialchars');

通話

htmlspecialchars('value', 'key')

これは正しくありません。htmlspecialchars では、2 番目のパラメータを整数にする必要があります - int $quote_style

于 2009-08-22T21:21:41.997 に答える
0

たとえそれが機能したとしても、あなたが望むことをするとは思いません。

htmlspecialchars() 関数は文字列を変更しません。変更された新しい文字列を返すだけです。配列ウォークは何の影響もありません。

于 2009-08-22T21:24:49.057 に答える
-2

エラーは明らかです... array_walk の 2 番目の引数は関数のコールバックに関するもので、関数には 2 つのパラメーターが必要です。最初は値用、2 番目はキー用です。

于 2009-08-22T21:20:40.470 に答える