为什么会这样
$trader_details = array_walk($trader_details, 'htmlspecialchars');
发出此错误?
Severity: Warning
Message: htmlspecialchars() expects parameter 2 to be long, string given
afaik htmlspecialchars除输入字符串外只有可选参数吗?这在codeigniter中运行
THX
答案 0 :(得分:2)
传递给array_walk
的回调函数需要第二个参数作为数组元素的键:
通常, funcname 采用两个参数。 array 参数的值是第一个,键/索引是第二个。
但是htmlspecialchars
期望第二个参数是引用样式(通常由整数类型的ENT_*
constants之一指定)。
请尝试使用array_map
。它只使用数组的值。
答案 1 :(得分:2)
array_walk默认传递2个参数。第一个是数组项值,第二个是数组项键。它试图将数组键作为第二个参数传递给htmlspecialchars,它希望第二个参数是一个定义要使用的引用样式的整数。
答案 2 :(得分: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
);
答案 3 :(得分:0)
我假设$ trader_details是一个字符串数组? htmlspecialchars()的第二个参数是整数类型,用于要使用的特定quotestyle。
您可能想要使用array_map。如果$ trader_details是一个二维数组,请发布它,以便我们可以看到你想要做的事情。
答案 4 :(得分:0)
array_walk将2个参数传递给您的方法(htmlspecialchars),第一个是当前数组元素的值,第二个是当前元素的键。
所以,如果
$trader_details = array('key' => 'value');
然后
$trader_details = array_walk($trader_details, 'htmlspecialchars');
呼叫
htmlspecialchars('value', 'key')
这是不正确的,htmlspecialchars要求第二个参数是一个整数 - int $ quote_style
答案 5 :(得分:0)
我认为它不会做你想要的,即使它有效。
htmlspecialchars()函数不修改字符串,它只返回带有修改的新字符串。数组遍历不会产生任何影响。
答案 6 :(得分:-2)
错误很明显... array_walk的第二个参数是关于函数回调,而函数需要有2个参数。第一个用于值,第二个用于键..