我正在使用以下代码kindly supplied in an answer here,但它会生成以下错误
Warning: array_map() [function.array-map]: Argument #2 should be an array in [path/to] on [Line #]
和
'Warning: Wrong parameter count for array_intersect() in [path/to] on [line #]'
谷歌错误没有产生任何有用的想法 - 任何帮助赞赏。
<?php
$types = array('.pdf', '.doc', '.xls');
if(0 < count(array_intersect(array_map('strtolower', $filename, $types)))) {
echo 'One';
} else {
echo 'Two';
}
?>
//更新
<?php
$filename = array(get_post_meta(get_the_ID(), 'mjwlink-url'));
$types = array('.pdf', '.doc', '.xls');
if(0 < count(array_intersect(array_map('strtolower', $filename), $types))) {
echo 'One';
} else {
echo 'Two';
}
&GT;
答案 0 :(得分:2)
strtolower
只接受一个参数,而带有三个参数($fun, $arr1, $arr2)
的{{3}}接受函数fun
,它必须自带两个参数:fun(arg1, arg2)
。请查看array_map
文档页面中的示例#3。
PS $filename
变量未在您的代码中初始化?
编辑:您可能需要array_intersect(array_map('strtolower', $filename), $types)
而不是(您将括号放在错误的位置)...
答案 1 :(得分:0)
对于array_map
,第二个参数需要是一个数组,所以我猜你应该在那里传递$types
而不是$filename
。
此外,您需要将至少两个数组传递到array_intersect
。你实际上只是在那里传递一个。