在 PHP 中使用字符串作为 if 语句的条件

问题描述 投票:0回答:2

我正在尝试创建一个函数,它将 if 语句的条件作为字符串,并将其作为布尔值返回以在 if 语句中使用。一旦我有了布尔值,我希望能够返回

$body
(如果是 true)。

逻辑类似于以下内容:

public function ifStatement($query, $body) {
    if (eval($query)) {
       return $body;
    }
}

因此,在使用该函数时,输出将如下所示,如果条件被评估并且条件为 true,它将返回

$body
,但如果为 false,则不会返回任何内容。

ifStatement('true', 'Hello World!');         // Returns 'Hello World!'
ifStatement('false', 'Hello World!');        // Returns nothing
ifStatement('0 == 0', 'Hello World!');       // Returns 'Hello World!'
ifStatement('0 == 1', 'Hello World!');       // Returns nothing

我正在寻找这样的东西的主要原因是因为我正在创建一个模板引擎,我希望能够将 if 语句和其他逻辑语句作为字符串传递到 php 中并让它返回适当的值。

php if-statement eval
2个回答
0
投票

$string1
$string2
设置为 true false 布尔值而不是字符串。然后检查它。它有效!

function ifStatement($query, $body) {
    if ($query) {
     return $body;
    }
}

$string1 = true;
$string2 = false;
ifStatement($string1, 'Hello World!');        //Returns True
ifStatement($string2, 'Hello World!');               //Return False

输出

Hello World!      //Outputs only first one which is true.

-2
投票

我不知道您是否找到问题的答案,但我认为回答这个主题对未来的读者(像我一样)会有好处。 这篇post解释了如何使用

eval(parse())
组合来实现您想要做的事情。

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.