【问题标题】:PHP populated field returns 0 even if populated即使已填充,PHP 填充字段也会返回 0
【发布时间】:2018-06-18 06:57:07
【问题描述】:

我有一个 MySQL 行,我可以通过以下方式获取数据:

...['immobile' => $dati_immobile->row(),]...

然后我有一个表,我传递一个函数中的每个字段,这是函数代码:

public function brochurefield($field, $label, $checkbox = false)
{
    if($field == 0){
        return '<tr><td>'.$label.' Is zero</td></tr>';
    }
}

当我使用从 MySQL 获取的文本字段回显此函数时,它返回 0:

//This returns "Accessori Bagno Is zero"
<?= $this->ui_model->brochurefield($immobile->arredo_bagno, "Accessori Bagno") ?>

//This returns "termo arredo" (text from DB)
<tr><td><?= $immobile->arredo_bagno ?></td></tr>

它基本上将字段读取为0 而不是“termo arredo”。 而如果我检查$field == "0"(字符串)和$field == ''(空字符串)上的字段,结果为假。

仅当我对照 0 (int) 值检查结果时,结果才为真。

问题只发生在字符串值上,而在 int 值上我得到了预期的结果(brochurefield(32,"test") 正确返回数字 32)。

我使用 PHP 7.1.1

【问题讨论】:

  • 也许是我,但我没有在该代码中看到与 MySQL 的任何交互。您只写入一个向用户显示的 HTML“表”,但这绝不会在 MySQL 中保存数据。
  • 帖子的第一行说我从 MySQL 表中得到一行,其余的都是 PHP。如果我 print_r($immobile) 我拥有我期望的所有字段以及它们各自的内容
  • @Mr.Web 数据来自哪里完全不相关。这是一个 PHP 问题,而不是 MySQL 问题。也就是说,您使用的是哪个版本的 PHP?
  • @GolezTrol 和巴特。抱歉,我编辑的是 PHP 而不是 MySQL
  • @BartFriederichs 7.1.1

标签: php


【解决方案1】:

你必须使用你的 if 条件。

该值由字符串的初始部分给出。如果字符串 以有效的数字数据开头,这将是使用的值。 否则,该值将为 0(零)。有效的数字数据是 可选符号,后跟一个或多个数字(可选包含一个 小数点),后跟一个可选的指数。指数是一个 'e' 或 'E' 后跟一个或多个数字。

这意味着:

("test" == 0) === true
("1test" == 0) === false


if ($field == "" || $field == "0" || (is_numeric($field) && $field == 0)) {

更多参考可以访问PHP manual

【讨论】:

  • 哇,对我来说是全新的。非常感谢!!
猜你喜欢
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 2021-02-06
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多