PHP Как назначить eval (0 для переменной - PullRequest
4 голосов
/ 08 марта 2011
<?php  
    $xs = eval("if ('1' == '0')
                echo 'never';
            else
                echo 'always';");

    //echo $xs;

Этот код возвращает «всегда», но я не хочу этого. Мне нужно взять эту переменную в другом месте.

Извините за плохой английский.

EDIT:

ЛЮДИ !!!!!!! Этот пример кода. Я знаю, что eval () в этом случае не нужен, но код в других моих проектах будет. Мне нужно, чтобы eval () возвращался в переменную. «

Ответы [ 6 ]

8 голосов
/ 08 марта 2011

Вот простой способ получить результат:

<?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'
1 голос
/ 08 марта 2011
$xs = ('1' == '0') ? 'never' : 'always';

Это альтернативная структура, которую вы также можете использовать в строке, если вокруг нее есть круглые скобки:)

1 голос
/ 08 марта 2011

этот код не имеет смысла и eval отстой: -)

попробуйте что-то вроде этого:

$xs = '1' == '0' ? 'never' : 'always';
echo $xs;
1 голос
/ 08 марта 2011
$xs = ('1' == '0') ? 'never' : 'always';
0 голосов
/ 08 марта 2011

Если у вас есть очень веская причина использовать eval, вы можете использовать вместо него одного из своих друзей create_function.

$x2 = create_function( '$a', 'echo $a == 1 ? "yes" : "no";' );
$x2( 1 ); // echos 'yes'
0 голосов
/ 08 марта 2011

Не используйте eval!

function test()
{
    return '1' == '0' ? 'never' : 'always';;
}

echo test();
...