我正在尝试模块化一个冗长的if..else
函数。
$condition = "$a < $b";
if($condition)
{
$c++;
}
有没有办法将文字字符串翻译成逻辑表达式?
答案 0 :(得分:7)
我正在尝试将冗长的if..else函数模块化。
您不需要将条件放在字符串中,只需存储布尔值true
或false
:
$condition = ($a < $b);
if($condition)
{
$c++;
}
$ a和$ b的值可能会在$ condition的定义及其用法之间发生变化
一个解决方案是Closure(假设定义和用法发生在同一范围内):
$condition = function() use (&$a, &$b) {
return $a < $b;
}
$a = 1;
$b = 2;
if ($condition()) {
echo 'a is less than b';
}
但我不知道这是否对你有意义而不知道你想要完成什么。
答案 1 :(得分:2)
如果您知道足以确定结果的变量
,请使用lambda$f = function ($a, $b) { return $a < $b; }
if ($f($x, $y)){}
答案 2 :(得分:1)
您可以使用eval执行此操作。但不确定为什么你不会立即评估这个条件。
答案 3 :(得分:-4)
<?php
$a=0;
$b=1;
function resultofcondition()
{
global $a,$b;
return $a<$b;
}
if(resultofcondition()){
echo " You are dumb,";
}else{
echo " I am dumb,";
}
$a=1;
$b=0;
if(resultofcondition()){
echo " You were correct.";
}else{
echo " in your face.";
}
?>
确实感谢你发表评论,错过了GLOBAL参数,对于那些投票失败的人来说,该代码会输出什么? ¬_¬w / e玩得开心xD