Php 如果任何元素为空,请删除数组

Php 如果任何元素为空,请删除数组,php,arrays,Php,Arrays,我的数组的结构如下。它是通过表单提交的文件数组。我有多个表单输入字段。但是,如果用户将某些字段留空,数组将显示如下。 然后我将它写入我的数据库。我不希望写入空字段 我尝试使用array\u filter()函数,但它无法工作,因为我的数组不是完全空的。错误元素设置为4。我该怎么做 Array ( [0] => Array ( [name] => stock-photo-cup-icons-tea-and-coffee-raster-ve

我的数组的结构如下。它是通过表单提交的文件数组。我有多个表单输入字段。但是,如果用户将某些字段留空,数组将显示如下。 然后我将它写入我的数据库。我不希望写入空字段

我尝试使用
array\u filter()
函数,但它无法工作,因为我的数组不是完全空的。错误元素设置为
4
。我该怎么做

Array
(
    [0] => Array
        (
            [name] => stock-photo-cup-icons-tea-and-coffee-raster-version-109119257.jpg
            [type] => image/jpeg
            [tmp_name] => /tmp/phpqWWM9X
            [error] => 0
            [size] => 30609
        )

    [1] => Array
        (
            [name] => 
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )

    [2] => Array
        (
            [name] => 
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )

    [3] => Array
        (
            [name] => 
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )

)
使用一个简单的条件

if(error == 0){
    //insert here
}else{
   //do nothing
}
这个简单的脚本:

foreach ($array as &$a) {
    $todel = false;
    foreach ($a as $k => $v) {
        if (empty($v)) { // condition to consider a variable empty
            $todel = true; break;
        }
    }
    if ($todel) unset($a);
}
应该行得通。我认为代码可以很好地解释它自己。我们要做的是在
$array
(主数组)的foreach循环中进行,并检查
$a
子数组(通过引用传递)是否有空值。如果是这样,我们将设置
$todel=true
(和
break;
以提高效率),这将取消设置当前
$a
子数组。

对于($i=0;$i),您可以将(可选)回调传递给:

for($i=0;$i<count($theArray);$i++)
{
    if($theArray[$i]['error']==4) 
    { 
        unset($theArray[$i]); 
    }
}

演示:

unset($theArray[$i];
unset($theArray[$i]);
我编辑了这个,但是它仍然显示了一个语法错误,刚刚测试过它,它可以正常工作
$filteredArray = array_filter($source, function($item) {
    return ($item['size'] > 0 && $item['error'] === 0);
});

var_dump($filteredArray);