在字符串之间插入单词


Inserting words between strings

我正在处理一个涉及多选复选框的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的最后一个元素放在一起。如果只有一个单词,只需返回即可。

我们不是来为您编写代码的,但这会帮助您。