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期望第二个参数是数组元素的键:

通常,funcname有两个参数。数组参数的值是第一个,键/索引是第二个。

htmlspecialchars期望第二个参数是引用样式(通常由整数类型的ENT_*常量之一指定)。

试试array_map吧。它只使用数组的值。

于 2009-08-22T21:17:49.243 回答
2

array_walk 默认传递 2 个参数。第一个是数组项值,第二个是数组项键。它试图将数组键作为第二个参数传递给 htmlspecialchars,它期望第二个参数是定义要使用的引用样式的整数。

于 2009-08-22T21:19:53.437 回答
1

http://uk.php.net/array_walk说:

funcname
通常,funcname 有两个参数。数组参数的值是第一个,键/索引是第二个

您可能正在寻找aray_map。另请注意,htmlspecialchars() 默认使用 iso-8859-1 作为编码。如果您的输出是 utf-8 编码的,您必须将该信息作为第三个参数传递给 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 () 的第二个参数是一个整数类型,为具体要使用的quotestyle。

您可能想使用array_map。如果 $trader_details 是一个二维数组,请发布它,以便我们看到您要执行的操作。

于 2009-08-22T21:20:49.860 回答
0

array_walk 将 2 个参数传递给您的方法(htmlspecialchars),第一个是当前数组元素的值,第二个是当前元素的

因此,如果

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

然后

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

来电

htmlspecialchars('value', 'key')

这是不正确的,htmlspecialchars 要求第二个参数是整数 - int $quote_style

于 2009-08-22T21:21:41.997 回答
0

我不认为它会做你想要的,即使它有效。

htmlspecialchars() 函数不修改字符串,它只是返回一个带有修改的新字符串。阵列行走不会有任何影响。

于 2009-08-22T21:24:49.057 回答
-2

错误很明显……array_walk的第二个参数是关于函数回调的,函数需要有2个参数。第一个是价值,第二个是关键..

于 2009-08-22T21:20:40.470 回答