我正在处理一个涉及多选复选框的PHP表单。我想将用户选择的选项加载到字符串中并回显它。我想用逗号和单词“and”分隔选项。
例如:
如果用户只选择选项1,我想回显“opt1”
如果用户选择选项1和选项2,我想回显“opt1和opt2”
如果用户选择选项1,选项2和选项3,我想回显“opt1,opt2和opt3”。
这是我的HTML:
<p><b>Product:</b><br>
<INPUT NAME="product[]" TYPE="CHECKBOX" VALUE="opt1">
Option 1<BR>
<INPUT NAME="product[]" TYPE="CHECKBOX" VALUE="opt2">
Option 2<BR>
<INPUT NAME="product[]" TYPE="CHECKBOX" VALUE="opt3">
Option 3<BR>
<INPUT NAME="product[]" TYPE="CHECKBOX" VALUE="opt4">
Option 4<BR></p>
感谢您帮助PHP菜鸟!
答案 0 :(得分:2)
如果您希望在运行时动态加载这些opt
值,则需要使用Javascript。当页面最初加载时,PHP会在服务器端加载,因此当用户选中一个框时,PHP无法自行执行任何操作,再次向屏幕显示echo
值。
答案 1 :(得分:1)
一个简单的解决方案是做三个案例;一个如果只有一个选择,一个用于两个选择,一个用于多于2个选择。
这个(未经测试的)解决方案应该让你朝着正确的方向前进:
<?php
$products = (isset($_POST['product']) && is_array($_POST['product'])) ? $_POST['product'] : array();
$count = count($products);
$options = '';
if ($count == 1) {
$options = $products[0];
} else if ($count == 2) {
$options = $products[0] . ' and ' . $products[1];
} else if ($count > 0) {
// remove (and store) the last product selected
$last = array_pop($products);
// join all remaining products by comma-separation, then add the last product
// to the end with an "and"
$options = implode(', ', $products) . ' and ' . $last;
}
echo $options;
?>
请注意,上述解决方案还假设您通过POST阵列接收用户选择。
答案 2 :(得分:-1)
首先,正确的语法表明你没有在最后and
之前加逗号。
所以,你真正需要做的是将最后两个单词与and
分开,其他单词与,
分开。
好吧,假设你已经在一个数组中使用了单词,那么你所要做的就是array_pop
最后一个元素。然后join
将,
剩余的元素与and
之间的{{1}}放在一起。如果只有一个单词,只需将其返回。
我们不是来为你编写代码,但是这应该帮助你。