0

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

我尝试使用array_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
        )

)
4

4 回答 4

1

您可以将(可选)回调传递给array_filter()

$filteredArray = array_filter($source, function($item) {
    return ($item['size'] > 0 && $item['error'] === 0);
});

var_dump($filteredArray);

演示:http ://codepad.viper-7.com/uocPT6

于 2013-02-07T19:56:58.590 回答
0

这个简单的脚本:

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 = truebreak;为了提高效率)将取消设置当前$a子数组。

于 2013-02-07T19:48:14.113 回答
0
for($i=0;$i<count($theArray);$i++)
{
    if($theArray[$i]['error']==4) 
    { 
        unset($theArray[$i]); 
    }
}

我会那样做

于 2013-02-07T19:54:18.420 回答
-1

使用简单条件

if(error == 0){
    //insert here
}else{
   //do nothing
}
于 2013-02-07T19:45:44.487 回答