【问题标题】:PHP multiple Isset declarationPHP 多重 Isset 声明
【发布时间】:2023-03-24 18:49:02
【问题描述】:

我正在为 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) 是我想要实现的,但是对于 1 个变量有两个 $_POST。

【问题讨论】:

  • 您的错误信息是什么?另外,调试的时候尽量不要使用三进制,以后可以随时写三进制

标签: php html forms isset


【解决方案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'] : '';

【讨论】:

  • 感谢您的帮助,这对我有用!提交这个作为回答的例子是有效的。
【解决方案2】:

第一句话是对的。 但是第二个用第二个逗号有错误。

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

$val = my_test?result_if_true:result_if_false;

您可以使用isset( $_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'] ),因为它会返回一个布尔值。

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

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

【讨论】:

  • 感谢您的支持!
【解决方案3】:

您正在为一个变量分配 2 个值,这是行不通的,您将不得不使用一个数组。

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

【讨论】:

  • 感谢您的 +1
猜你喜欢
  • 2017-04-10
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多