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