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);