Массивы хороши для этого:
$str = array();
foreach (array('first','second','third','fourth') as $k) {
if (isset($_POST[$k]) && $_POST[$k]) {
$str[] = $_POST[$k];
}
}
$last = array_pop($str);
echo implode(", ", $str) . " and " . $last;
Вы должны, вероятно, особый случай выше, когда есть один предмет. Я, на самом деле, написал функцию под названием «соединение», которая выполняет все вышеперечисленное и включает в себя особый случай:
function conjunction($x, $c="or")
{
if (count($x) <= 1) {
return implode("", $x);
}
$ll = array_pop($x);
return implode(", ", $x) . " $c $ll";
}
Хороший вопрос!
Обновлено : универсальный способ сделать это:
function and_form_fields($fields)
{
$str = array();
foreach ($fields as $k) {
if (array_key_exists($k, $_POST) && $v = trim($_POST[$k])) {
$str[] = $v;
}
}
return conjunction($str, "and");
}
...
and_form_fields(array("Name_1","Name_2",...));
Я добавил правильную проверку $ _POST, чтобы избежать уведомлений и пустых значений.