我的阵列具有以下结构。它是通过表单提交的一系列文件。我有多个输入字段用于表单。但是,如果用户将某些字段留空,则数组将显示如下。 然后我将它写入我的数据库。我不想写空字段。
我尝试使用array_filter()
函数,但由于我的数组不是完全空的,所以它不起作用。 error元素设置为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
)
)
答案 0 :(得分:1)
您可以将(可选)回调传递给array_filter()
:
$filteredArray = array_filter($source, function($item) {
return ($item['size'] > 0 && $item['error'] === 0);
});
var_dump($filteredArray);
答案 1 :(得分:0)
使用简单的条件
if(error == 0){
//insert here
}else{
//do nothing
}
答案 2 :(得分: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 = true
(以及效率break;
)将取消设置当前$a
子数组。
答案 3 :(得分:0)
for($i=0;$i<count($theArray);$i++)
{
if($theArray[$i]['error']==4)
{
unset($theArray[$i]);
}
}
我会这样做