1

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

4

3 回答 3

2

如果您希望这些opt值在运行时动态加载,则需要使用 Javascript。PHP 在页面最初加载时在服务器端加载,因此当用户选中一个框时,PHP 无法自行对echo屏幕上的值执行任何操作。

于 2012-07-11T17:54:49.583 回答
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 数组接收用户选择。

于 2012-07-11T17:57:59.060 回答
-1

首先,正确的语法表明您不要在 final 之前放置逗号and

所以,你真正需要做的是将最后两个单词用 分开and,其他单词用 . 分开,

好吧,假设您已经将单词放在数组中,那么您所要做的就是array_pop最后一个元素。然后join将剩余的元素与,, 并将其与最后一个与and中间的元素放在一起。如果只有一个词,就返回它。

我们不是来为您编写代码的,但这应该可以帮助您。

于 2012-07-11T17:55:30.457 回答