在字符串之间插入单词

时间:2012-07-11 17:52:27

标签: php

我正在处理一个涉及多选复选框的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菜鸟!

3 个答案:

答案 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}}放在一起。如果只有一个单词,只需将其返回。

我们不是来为你编写代码,但是这应该帮助你。