我试图模块化一个很长的if..else
函数。我可以在字符串中存储逻辑比较吗?
$condition = "$a < $b";
if($condition)
{
$c++;
}
是否有任何方法将文字字符串翻译成逻辑表达式?
我试图模块化一个很长的if..else
函数。我可以在字符串中存储逻辑比较吗?
$condition = "$a < $b";
if($condition)
{
$c++;
}
是否有任何方法将文字字符串翻译成逻辑表达式?
我想模块化一个冗长的if..else函数。
你不需要把条件为一个字符串,只存储布尔true
或false
:为$ a和$ b
值定义之间可能会改变条件及其用法
一种解决方案是闭合(假设定义和用法在同一范围内发生):
$condition = function() use (&$a, &$b) {
return $a < $b;
}
$a = 1;
$b = 2;
if ($condition()) {
echo 'a is less than b';
}
但我不知道这对你是否合理,而不需要知道你正在努力完成什么。
<?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.";
}
?>
事实上感谢评论说出来,缺少全局参数,对于那些谁否决了,什么话该代码输出? ¬_有兴趣xD
这在PHP中不起作用,'$ a'和'$ b'在函数范围中不可用。 –
他们是.-。 .-。 –
@RicardoOrtegaMagaña他们当然不是,除非你使用'global $ a,$ b;' –
使用拉姆达如果你知道有足够的判断结果变量
$f = function ($a, $b) { return $a < $b; }
if ($f($x, $y)){}
+1。虽然你不需要这里的lambda,只是一个简单的旧函数声明也可以做到这一点:) –
*您可以用*'eval'做到这一点,但标准的做法是,也许定义一组函数... –
你应该解释一下,你对“模块化”意味着什么。 –
请显示你冗长的if..else块(不是功能)。我几乎可以肯定,解决方案不是'模块化'。 – markus