我有一个表单,它接受用户输入并将其放入数组中。每个表单项都有一个标签。标签中的文本对应于数组$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会给您带来错误。