array_filter() 期望参数 1 是 PHP 中的数组

Posted

技术标签:

【中文标题】array_filter() 期望参数 1 是 PHP 中的数组【英文标题】:array_filter() expects parameter 1 to be array in PHP 【发布时间】:2018-11-10 04:01:31 【问题描述】:

我有几天的线路问题。

这是我的代码:

$files = array();
$count = count(array_filter($_FILES['fichier']['name']));
echo $count;

for($i=0;$i<$count;$i++)
    array_push($files, $_FILES['fichier']['tmp_name'][$i]);

此代码在表单中,但是当我提交表单时,我收到以下错误消息:

警告:array_filter() 期望参数 1 为数组,给定 null 在...

这部分代码在 FR 版本中有效,但是当我尝试在 EN 版本中复制/粘贴时,它不起作用。

我已经尝试了一切,没有任何反应。

谢谢。

编辑:

var_dump(array_filter($_FILES['fichier']['name']));

把这个给我:

当我尝试上传 1 个或多个文件时。

【问题讨论】:

array_filter($_FILES['fichier']['name']) 返回一个字符串,其中包含已在字段fichier 下上传的文件名。您编辑问题以详细说明您的要求,也许我们可以提供帮助。这个$count 不能是什么? var_dump($_FILES) $count 每次都返回 0,即使我要上传 1 个或多个文件。这部分代码在FR版本中运行良好,我无法理解问题。 @u_mulder var_dump($_FILES) 返回给我:array(0) ,即使我上传两个文件,例如 所以真正的问题$_FILES 为空。检查您的表格。你的表单有enctype 属性吗? 【参考方案1】:

我认为当你看到这个错误时你可以使用这个:

<td> is_array($client->phone) ? implode($client->phone, '-') : $client->phone </td>

【讨论】:

【参考方案2】:

您的源代码中的array_filter 函数需要一个数组作为参数,并且您使用一个字符串。您应该确保参数是一个数组。如果你检查了,你应该使用is_array的帮助。

【讨论】:

【参考方案3】:

你可以这样检查

if(is_array($_FILES['fichier']['name']))
    $count = count(array_filter($_FILES['fichier']['name']));
 else 
    $count = 0;
 
echo $count;

【讨论】:

以上是关于array_filter() 期望参数 1 是 PHP 中的数组的主要内容,如果未能解决你的问题,请参考以下文章

array_filter与array_map

PHP array_filter() 函数

如何修复 htmlspecialchars() 期望参数 1 是字符串,给定数组

array_maparray_walk的用法和区别

php利用array_filter()过滤数组空值

在 array_filter 中使用外部变量