PHP如何将eval(0赋值给变量

4
<?php  
    $xs = eval("if ('1' == '0')
                echo 'never';
            else
                echo 'always';");

    //echo $xs;

这段代码每次都返回'always',但我不想要它。我需要把这个变量带到其他地方。
对于我的英语不好,很抱歉。
编辑:
大家注意!!!这只是示例代码。我知道在这种情况下不需要使用eval(),但在我的其他项目中需要。我需要把eval()的返回值存储到一个变量中。

1
提示:代码不会返回任何内容,它只会回显。 - BoltClock
6个回答

10

这是一个简单的方法来获得结果:

<?php  
ob_start();
eval("if ('1' == '0')
            echo 'never';
        else
            echo 'always';");
$xs = ob_get_contents();
ob_end_clean();
//echo $xs;

为了获取eval()的返回值,你需要在被求值的代码中返回一些东西,例如:

$xs = eval("return '1' == '0' ? 'never' : 'always';");
echo $xs; // echoes 'always'

在这种情况下不需要使用eval^^ - tsadiq
4
我认为他使用eval()是有合理用途的,只是发布了一些虚假代码来解决将经过eval()处理的代码输出到变量的问题。 - jmz

1

这段代码毫无意义,而且 eval 很糟糕 :-)

可以尝试像这样:

$xs = '1' == '0' ? 'never' : 'always';
echo $xs;

1
$xs = ('1' == '0') ? 'never' : 'always';

1
$xs = ('1' == '0') ? 'never' : 'always';

这是一种替代结构,您也可以在字符串中使用它,只要您在其周围加上括号 :)


0

不要使用 eval!

function test()
{
    return '1' == '0' ? '从不' : '总是';;
}
echo test();

0

假设您有非常充分的理由使用 eval,那么您可以使用它的一个朋友 create_function

$x2 = create_function( '$a', 'echo $a == 1 ? "yes" : "no";' );
$x2( 1 ); // echos 'yes'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接