【问题标题】:PHP ternary always outputs as if conditional is truePHP 三元总是像条件为真一样输出
【发布时间】:2017-04-25 06:35:10
【问题描述】:

在下面的代码中...

echo "|".$express_ship."|".is_bool($express_ship)."|".(int)$express_ship."|".is_true($express_ship)."|";
echo '<input type="checkbox" id="express_ship" name="express_ship"'.($express_ship ? ' checked' : '').'/>';

... 输入框总是被选中,即使在它返回之前的 echo 行... |假||0|假|

有什么想法吗?

奇怪的是 is_bool($express_ship) 返回一个空字符串。有没有人遇到过这种情况?

PS:如果 $express_ship 为真,则前面的行显示为... |真||0|真|

附录:出于某种原因,我认为 is_true 是一个 PHP 函数,我正在使用它来调试 $express_ship。奇怪的是,这从未导致错误,即使 PHP 中没有这样的功能。 (而且我自己没有编写过这样的函数。)

【问题讨论】:

  • 您是否遇到任何 php 错误?
  • 当我在代码$express_ship = true$express_ship = false 之前添加时,您的代码对我有效。你在哪里声明$express_ship?编辑:根本不检查没有声明框。
  • 我也在下面尝试了 Pradeep 的回答。将输入语句更改为... 仍然没有工作.
  • @ZZ-bb 我刚才回显 is_true($express_ship) ,它显示为假。所以 $express_ship 肯定是假的。也许我会用“if”语句替换整个事情,看看会发生什么。
  • @AhmedGinani 没有 PHP 错误。

标签: php html


【解决方案1】:

如果变量 $express_ship 是返回字符串,如“true”或“false”,它将始终显示您的复选框已选中。

您需要更新如下代码:

echo '<input type="checkbox" id="express_ship" name="express_ship"'.($express_ship == 'true' ? ' checked' : '').'/>';

或者你需要通过 var_dump 来检查你在这个变量 $express_ship 中得到的值的类型

【讨论】:

  • 感谢您的回答。请查看我修改后的问题。
  • 需要通过 var_dump 检查并找到变量 $express_ship 包含的值的类型,根据这个你需要应用条件,如果你的 true 和 false 将以字符串而不是布尔值返回,那么你应该与 ($express_ship == 'true' ? 'checked' : '') 一起使用,如果变量返回值为 boolean 则 ($express_ship ? 'checked' : ''),请使用 var_dump($express_ship) 检查类型。
  • 已经解决了,谢谢!是的,在 var_dump 中,这毕竟是一个字符串。显然 php 中没有 is_true 函数。为什么这没有导致我不知道的错误。
猜你喜欢
  • 2015-08-19
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 2018-02-24
相关资源
最近更新 更多