解决'Argument#2应该是'中的一个数组'

时间:2011-12-11 02:02:17

标签: php

我正在使用以下代码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;

2 个答案:

答案 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。你实际上只是在那里传递一个。