【问题标题】:PHP, undefined index, isset and radio buttons [duplicate]PHP,未定义的索引,isset和单选按钮[重复]
【发布时间】:2021-02-04 06:23:17
【问题描述】:

我有一个表单,我正在做输入验证,所以当用户输入错误时,我会生成一条错误消息并重新填写用户输入的所有字段。

现在,当我开始将 php.ini 文件用于 mysql 的东西时,会弹出一些错误,例如

Undefined index: var in file.php on line n

对于一个简单的文本输入(标题),我可以通过这样做相当容易地解决这个问题

value="<?= isset($_POST["title"]) ? $_POST["title"] : "";?>"

不过,我也使用 5 个单选按钮来进行评分,如下所示:

value="1" <?= $_POST["grade"] == "1" ? "checked" : "" ?>
value="2" <?= $_POST["grade"] == "2" ? "checked" : "" ?>
etc

我也尝试在这里使用 isset 绷带,

value="1" <?= isset($_POST["grade"] == "1") ? "checked" : "" ?>

但正如我很快被提醒的那样,isset 仅适用于变量和数组,而不适用于布尔值。

什么是解决这个问题的合适方法?

【问题讨论】:

  • 您能否尝试将&lt;?= 替换为&lt;?php 并重试?
  • 谁告诉 isset 不适用于布尔值?
  • @MerianosNikos 如果他们用&lt;?php 替换&lt;?=,它不会输出任何东西。 &lt;?= 只是写 &lt;?php echo 的一种更短的方式@
  • @MagnusEriksson 我只是认为这可能会改变 php.ini 中影响短开始标签的某些内容。如果没有完整的代码示例,要提供帮助并不容易。
  • @MerianosNikos - 无论短打开标签设置如何,都可以使用简写 &lt;?=

标签: php isset


【解决方案1】:

您要做的第一件事是检查变量是否已设置。然后,您可以使用运算符附加比较。

value="1" <?= isset($_POST["grade"]) && $_POST["grade"] == "1" ? "checked" : "" ?>

【讨论】:

  • 确实有效,谢谢!我之前尝试过类似的东西,但我一定是语法或顺序错误。
  • @Robin 你经常回答问题,但我没有注意到很多关闭。请理解,经过 10 年的狂热问答,所有基本的 php 问题都是重复的。请投票关闭重复的问题。
猜你喜欢
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 2014-01-27
  • 2014-05-08
相关资源
最近更新 更多