【问题标题】:Make condition in one line? [duplicate]在一行中创建条件? [复制]
【发布时间】:2016-07-06 12:37:39
【问题描述】:

通常我这样设置if/else 条件:

if(empty($data['key']))
{
    $err = "empty . $key ";
}

但我看到有ternary operator.

我真的不明白这是如何工作的。有人可以给我举个例子吗?如何在三元逻辑中转换此条件?

【问题讨论】:

  • 三元运算符的文档太多了。你真的需要提出一个新问题吗?为什么不谷歌呢? $var = (<condition> ? <value if true> : <value if false>);
  • 所以应该是这样的:$var = (empty($data['key']) $error = "empty . $key" : continue;?
  • 否...仅用于分配。您必须分配给$var。请只用谷歌搜索。这并不难理解。
  • 其实,看起来很简单。谢谢..

标签: php


【解决方案1】:

我不确定你想用你的代码做什么。 您检查它是否为空,然后尝试通过集中一个空值将$err 设置为一个值。

也许这更可能是您想要的。

// Ternary operator
$err = empty($data['key']) ? "empty key" : '';
# -----------IF-----------------THEN ---- ELSE

// Ternary operator (nesting) (not recommended)
// Changing empty() to isset() you must rewrite the entire logic structure.
$err = empty($data) ? 'empty' : is_numeric($data) ? $data : 'not numeric';
# ---------IF--------- THEN -------ELSEIF-----------THEN-----ELSE

// Null Coalescing operator ?? available in PHP 7.
$err = $data['key'] ?? 'empty value';
# ---- IF ISSET USE --- ELSE value

// Nesting 
$err = $data['key'] ?? $_SESSION['key'] ?? $_COOKIE['key'] ?? 'no key';
#      IF ISSET USE -- IF ISSET USE ------ IF ISSET USE ------ELSE 

【讨论】:

  • 如果我有多个条件要做?我想将所有内容存储在同一个变量中,我的意思是在空检查 is_numeric 等之后.. 在同一个 err 变量中我该怎么做?谢谢
  • 并添加类似 `if(empty($data) && !is_numeric($data)) 的内容是可能的吗?
  • 嵌套三元操作会很快污染代码,不推荐使用,因为它也很难阅读。我宁愿推荐一个if 声明就像你上面的评论(是的,它可能)
猜你喜欢
  • 1970-01-01
  • 2018-04-17
  • 2023-01-15
  • 2015-05-11
  • 2021-10-09
  • 2011-04-04
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
相关资源
最近更新 更多