在检查时分配变量

问题描述 投票:0回答:5

我不确定这是否可能,但我正在寻找一种在

if (...) { }
语句中检查变量时分配变量的方法。基本上是什么使得这个......

$var = somefunction();

if ($var == 10) {
    #do something
}

进入这样的事情

if(($var = somefunction()) == 10) {
    #do something
}

正如我所说,我不确定这是否可能,但只是想知道是否有办法先保存分配变量。我想要这个,因为我有一个函数,它要么输出数组,要么输出 false。


谢谢:)

php variables if-statement
5个回答
5
投票

这也可以:

if(($var = somefunction()) == 10) {
    #do something
}

但是您提出的第一种方法简单、清晰且可读,除了您需要使用

==
===
,而不是
=
,进行相等性检查之外:

$var = somefunction();

if ($var == 10) {
    #do something
}

你为什么不直接使用它呢?


1
投票

我相信这样的事情会起作用:

if(($var = somefunction()) == 10) {
    //Do something
}

本质上这是一个评估问题。首先评估括号,这就是为什么它会首先执行

$var = somefunction()
,然后检查返回值($val 的值)是否为 10。


0
投票

如果以后不需要该变量,那么

if (somefunction() == 10) {
  //do something
}

也足够了。


0
投票

我总是发现自己想要这样做,以减少代码行数,而且我曾经这样做过,但由于这个原因,我多年前遇到了一个错误。我确信代码完全做了它应该做的事情,但那次经历让我这样做......并且看,在这里我再次想再做一次! (你好,未来的自己)

    if($user = getUser()) {
        die('We got a user, they are '.$user);
    } else {
        die('We did not get a user');
    }

至少在 PHP 8.1 中,这似乎可行。我更喜欢这个:

    $user = getUser();
    if($user) {
        die('We got a user, they are '.$user);
    } else {
        die('We did not get a user');
    }

这样做的原因是,它提倡一种易于理解的编码风格,并将赋值运算符 (

=
) 留在
if()
之外,而它绝对不属于这里。

它还提供了一个机会,可以使用您最喜欢的调试工具(例如

$user
或您拥有的工具)检查
die(var_dump($user))
的值,而无需分解
if()
条件。


-1
投票

试试这个

$var ;

 if (true) {
   $var= somefunction();
   if($var==10) {
      # Handler
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.