PHP 多个 Isset 声明

PHP multiple Isset declaration

我正在为 RSVP 创建一个 PHP 表单,我正在尝试将多个 $_POST 声明到 1 个 isset 变量,但我的代码中不断出现错误,这就是我的错误尝试做:

    $attendance = isset( $_POST['template-contactform-event'] ) ? $_POST['template-contactform-event'] : '';

    $guestname1 = isset( $_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'] ) ? $_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'] : '';

所以我的错误发生在第二个声明行 $guestname1 我认为这是因为 isset 之后的第二个昏迷,但我不确定我将如何声明它?第一行($attendance)是我想要实现的,但是有两个 $_POST 用于 1 个变量。

虽然 isset() 可以采用多个参数,但内联 iif() 不能。

试试这个,我连接了两个参数。

<?php

$attendance = isset( $_POST['template-contactform-event'] ) ? $_POST['template-contactform-event'] : '';

$guestname1 = isset( $_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'] ) ? 
                $_POST['template-contactform-guestname1'].' '.$_POST['template-contactform-guestname1r'] : '';

第一种说法是对的。 但是第二个第二个逗号有错误。

如果你看一下三元的构建方式:

$val = my_test?result_if_true:result_if_false;

你可以做 isset( $_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'] ) 因为它会 return 一个布尔值。

但不写:$_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'] 有第二个参数。因为三元不期望这个逗号。

如果您想了解更多信息,我找到了这篇文章 https://davidwalsh.name/php-shorthand-if-else-ternary-operators

您正在为一个变量分配 2 个值,这不起作用,您将不得不使用一个数组。

而且 isset() 也不是检查用户是否向表单输入值的方法,因为如果用户提交空白表单,那么 isset($_POST['smth']) 将 return 为真,因为索引存在于超全局 $_POST 中,其值设置为空字符串。使用 empty() 和一个数组来存储 2 个值。