这可能是 最愚蠢的问题,答案可能不是,但......
是否可以在if语句的表达式中使用字符串的值?例如,说我通过了
'if strcasecmp("hello", "Hello") == 0'
到一个函数并调用它$ string,然后我可以将该值用作if语句的条件评估吗?
if (the value of $string) {}
我知道eval()将执行一个字符串,就像它是PHP代码一样,但实际执行它并返回null / false,而不是仅仅允许围绕字符串的PHP来处理字符串的内容。我也知道你可以使用$ {$ varname}来使用变量变量,它会告诉php使用$ varname的值作为变量的名称。
所以我猜我正在寻找的有点像'变量代码'而不是'变量变量'。
答案 0 :(得分:6)
我必须猜一下,也许你想return
来自eval
?
if (eval('return strcasecmp("hello", "Hello") == 0;')) {}
此外,还有一些可能会增加流动性的闭包:
$if = function($string) {
return eval(sprintf('return (%s);', $string));
}
$string = 'strcasecmp("hello", "Hello") == 0';
if ($if($string)) {
...
}
答案 1 :(得分:1)
if
语句不会返回任何内容,因此您的示例将无效。但是,您可以将表达式存储为字符串并稍后对其进行评估:
$expr = 'strcasecmp("hello", "Hello") == 0';
$val = eval($expr);
现在,请记住,非常不鼓励使用eval
,因为它可能会导致严重的安全问题。
答案 2 :(得分:0)
if( eval("return ({$string});") ):
...
endif;
虽然你想要做的事情非常糟糕。