跳过数组值,如果为null

时间:2013-11-29 21:18:54

标签: php arrays

我有一个表单,它将用户输入并将其放入数组中。每个表单项都有一个标签。标签中的文本对应于数组$ 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);
?>

我将两个数组合并得到输出,因为数字代表项目数量。 数组([Apple] =&gt; 12 [香蕉] =&gt; 14 [橙子] =&gt; 7 [葡萄] =&gt; 2)

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

数组([Apple] =&gt; 12 [Banana] =&gt; 14 [Grapes] =&gt; 2)

我还尝试使用$ total来输出数组项

echo implode(",", $total);

但是我只从$ amount数组中获取值,而不是$ items和$ amount。

1 个答案:

答案 0 :(得分:1)

如果代码结构应保持相同并且您需要添加一些代码行,则可以在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将引发错误。