使用字符串值作为/ else表达式

时间:2012-03-06 17:02:06

标签: php

这可能是 最愚蠢的问题,答案可能不是,但......

是否可以在if语句的表达式中使用字符串的值?例如,说我通过了

'if strcasecmp("hello", "Hello") == 0'

到一个函数并调用它$ string,然后我可以将该值用作if语句的条件评估吗?

if (the value of $string) {}

我知道eval()将执行一个字符串,就像它是PHP代码一样,但实际执行它并返回null / false,而不是仅仅允许围绕字符串的PHP来处理字符串的内容。我也知道你可以使用$ {$ varname}来使用变量变量,它会告诉php使用$ varname的值作为变量的名称。

所以我猜我正在寻找的有点像'变量代码'而不是'变量变量'。

3 个答案:

答案 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;

虽然你想要做的事情非常糟糕。