我正在处理一个涉及多选复选框的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 noob!
如果希望在运行时动态加载这些opt
值,则需要使用Javascript。当页面最初加载时,PHP在服务器端加载,因此当用户选中一个框时,PHP无法再次对屏幕上的echo
值执行任何操作。
一个简单的解决方案是处理三种情况;一个(如果只有一个选择),一个用于两个选择,以及一个用于多于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阵列接收用户选择。
首先,正确的语法声明在最后的and
之前不要放逗号。
所以,你真正需要做的是用and
分隔最后两个单词,用,
分隔其他单词。
好吧,假设你的单词已经在一个数组中了,你所要做的就是array_pop
,最后一个元素。然后用,
将剩余的元素join
,并将其与中间有and
的最后一个元素放在一起。如果只有一个单词,只需返回即可。
我们不是来为您编写代码的,但这会帮助您。