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

1

簡単な解決策は、3 つのケースを実行することです。1 つしか選択されていない場合は 1 つ、2 つ選択されている場合は 1 つ、2 つ以上選択されている場合は 1 つです。

この(テストされていない)ソリューションは、正しい方向に導くはずです:

<?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 に答える