【问题标题】:Problems with NULL or EMPTY variableNULL 或 EMPTY 变量的问题
【发布时间】:2015-11-26 22:51:46
【问题描述】:

我正在尝试编写一个非常简单的 php 单行 if 语句,但我遇到了 null 结果的问题。如果 companyname 为 NULL,则使用 firstname + lastname 组合。

SELECT `firstname`, `lastname`, `companyname` FROM (`client`) WHERE `client_id` = '116'

Array
(
    [firstname] => John
    [lastname] => Citizen
    [companyname] => 
)

$name = trim($row['companyname']) == FALSE ? $row['firstname'] & " " & $row['lastname'] : $row['companyname'] ;

我尝试了以下所有选项均无济于事;

  • == 错误
  • === 空

但他们都不会返回我期望的名字 + 姓氏组合。

【问题讨论】:

  • 您可以在 SQL 中使用 COALESCE 来返回一个特定的字符串,您可以在 companyname 为 NULL 时检查该字符串。即COALESCE(companyname ,"<EMPTY>") 然后你可以在PHP 中做$row['companyname'] == "<EMPTY>"
  • 不确定你从哪里得到这个:$row['firstname'] & " " & $row['lastname'],但应该是$row['firstname'] . " " . $row['lastname'] - 这会导致各种问题!
  • 你试过== ""吗?
  • 为什么不使用 if 和 else 语句分步执行此操作,而不是在一个语句中将它们混杂在一起?很乱,作为初学者,如果不是很了解,建议不要使用。
  • 如果这些答案中的任何一个有帮助,最好给那些有帮助的人投票并接受最有帮助/最正确的答案。

标签: php mysql


【解决方案1】:

使用empty 函数试试这个。如果$row['companyname'] 为空,则返回$row['firstname']$row['lastname'] 的串联字符串,否则返回$row['companyname'] 的修剪值。

$name = ( empty(trim($row['companyname'])) ? ($row['firstname'].' '.$row['lastname']) : trim($row['companyname']) );

【讨论】:

    【解决方案2】:

    这在 PHP 中应该是一件简单的事情。而不是=== FALSE,为什么不使用稍微宽松的打字,只使用!而不是比较:

    $name = ( ! trim($row['companyname']) )
        ? $row['firstname'] . " " . $row['lastname'] 
        : $row['companyname'];
    

    还有 - 在 PHP you concatenate strings. 中,而不是在 &....

    【讨论】:

      【解决方案3】:

      您是否尝试过使用 'empty()' 之类的:

      $name = (empty(trim($row['companyname'])) == TRUE ? $row['firstname'] . " " . $row['lastname'] : $row['companyname']) ;
      

      【讨论】:

      • 你必须使用点而不是和号。
      【解决方案4】:

      你可以使用:

      $name = ($row['companyname']=='' )
      ? $row['firstname'] . " " . $row['lastname'] 
      : $row['companyname'];
      

      【讨论】:

        【解决方案5】:

        自 PHP 5.3 起,you can leave out the "middle" statement 使用三元运算符时。由于an empty string equals boolean false,这个简单的语句有效:

        $name = $row["companyname"] ?: "$row[firstname] $row[lastname]"
        

        另请注意,如果您要连接字符串(此处没有必要),请使用 . 而不是 &

        【讨论】:

          猜你喜欢
          • 2017-08-12
          • 1970-01-01
          • 2016-02-19
          • 2013-02-01
          • 1970-01-01
          • 2023-01-28
          • 1970-01-01
          • 2023-04-04
          • 1970-01-01
          相关资源
          最近更新 更多