2012-10-01 119 views
0

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

中的代码后,我还需要重新使用过滤器的IF语句,这里是可变

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

现在,这是我的if语句

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

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

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

+0

您的'$ over5hours'变量需要是一个函数 – Malachi

回答

2

假设我明白你的目标,你可以简单地删除价值$ 5小时左右的报价。

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

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

+0

我刚才说的是同样的事情。这将导致条件立即运行并将$ over5hours设置为true或false。 –

+0

我会补充说,'$ workextra-> id'在设置和重用时不能改变,并且通过给变量赋值条件,你创建的布尔值是true或false。 – ernie

1

你不能插入这样的语句。 ... && $over5hours不会评估$over5hours作为表达式;它只是一个字符串,与$anyRandomString == true相同。你能做的最好是先计算表达式为布尔值,并使用在if声明:

$over5hours = $workextra->id > 767 && $workextra->id <=1301; 
if ($userid == $workextra->ownerId && $workextra->hoursDone >= 5 && $over5hours) 
0

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

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

0

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