0

我有一堆 if 语句,它们根据传递的信息有不同的过滤器。

稍后在代码中,我还需要在 IF 语句中重新使用该过滤器,这是变量

$over5hours = "$workextra->id > 767 && $workextra->id <=1301";

现在这是我的 if 语句

if($userid==$workextra->ownerId && $workextra->hoursDone >= 5 && $over5hours)

但是那个 over5hours 变量只显示:>767 && <1301,而不是在 IF 语句中写入整个字符串。

除了将该变量转换为数组之外,还有一种更简单的方法可以做到这一点,我不想编写 2 倍的 IF 语句,因为它会使我已经很糟糕的新手代码膨胀。有什么建议么?

4

4 回答 4

2

假设我了解您的目标,您可以简单地删除 $over5hours 值周围的引号。

$over5hours = $workextra->id > 767 && $workextra->id <=1301;

但是,我可能会误解您的目标。

于 2012-10-01T23:13:22.623 回答
1

你不能插入这样的语句。... && $over5hours$over5hours作为表达式计算;它只是一个字符串,与$anyRandomString == true. 您可以做的最好的事情是首先将表达式评估为布尔值并在if语句中使用它:

$over5hours = $workextra->id > 767 && $workextra->id <=1301;
if ($userid == $workextra->ownerId && $workextra->hoursDone >= 5 && $over5hours)
于 2012-10-01T23:13:57.883 回答
0

如果使用单引号而不是双引号,则不会计算变量。

此外,如果 $workextra->id 的值没有改变,您可以简单地省略引号。

于 2012-10-01T23:14:41.297 回答
0

您需要使用单引号或转义 $ 才能打印。但除此之外,您将需要使用 eval() 来让此代码以您想要的方式运行。但是使用 eval() 是不好的做法。您可能应该找到另一种方法。

于 2012-10-01T23:16:15.917 回答