如果为null,则跳过数组值


Skip Array value if null

我有一个表单,它接受用户输入并将其放入数组中。每个表单项都有一个标签。标签中的文本对应于数组$items中的项目。

if(isset($_POST['submit'])){
$items = array('Apple', 'Banana', 'Oranges', 'Grapes');    
$amount = array();    
foreach($_POST['item'] as $value){    
    $amount[]=($value);
}
  $total =array_combine($items, $amount);
    }
?>
<form method="post" action"">
<label>Apple</label><input type="text" name=item[]>
<label>Banana</label><input type="text" name=item[]>    
<label>Orange</label><input type="text" name=item[]>
<label>Grapes</label><input type="text" name=item[]>
<input type="submit" name="submit" value="submit">    
</form>

<?php
print_r($total);
?>

我将两个数组组合在一起,得到数字表示项目数量的输出。阵列([苹果]=>12[香蕉]=>14[橙子]=>7[葡萄]=>2)

如果其中一个表格没有填写,例如错过了桔子,我希望能够跳过数组中的一个项目。我希望阵列输出

阵列([苹果]=>12[香蕉]=>14[葡萄]=>2)

我还尝试了内爆$total来输出数组项

echo implode(",", $total);

然而,我只使用$amount数组中的值,而不是$items和$amount。

如果代码结构应该保持不变,并且您需要添加一些代码行,您可以在foreach循环中添加计数器和If语句,如下所示:

if(isset($_POST['submit'])){
$items = array('Apple', 'Banana', 'Oranges', 'Grapes');  
$amount = array();   
$counter=0; 
foreach($_POST['item'] as $value){ 
    if(strlen($value) != 0) {
        $amount[]=($value);
    }
    else{
        unset($items[$counter]);
    }
    $counter++;
}
  $total =array_combine($items, $amount);
}

这将保留$items数组中的项计数,如果传递的数据中没有值,则if语句将从$items阵列中筛选出该项。

在这种情况下,您还应该检查表单中传递的数据是否不是空的,否则PHP会给您带来错误。