2

(以下)のようなことをしたいのですが、可能ですか?

$operator = >=;
if($value.$operator 400){

// ...

}
4

2 に答える 2

13

演算子を変数として保存することはできませんが、関数を保存することはできます (PHP 5.3 以降)。それを試してください:

$operator = function($a){
    return $a >= 400;
}

if($operator($value)){
}

または、「通常の」関数を使用できると思います。

function operator($a){
    return $a >= 400;
}

if(operator($value)){
}
于 2012-07-23T21:10:29.833 に答える
2

あなたができるもう一つのこと(しかし絶対にすべきではありません)は次のものを使用していeval()ます:

<?php
$value = 400;
$operator = '>=';
eval('if('.$value.$operator.' 400) echo "something";');

繰り返しますが、これは実行できることを示すためのものですが、絶対に使用しないでください。使用しeval()ないと、私が個人的に子猫を殺します。

そして、このようなものが必要だと思うなら、あなたのデザインには大きな欠陥があると真剣に考えています.

@rocket がコメントで語ったように。これを行うよりクリーンな方法は次のとおりです。

<?php
$value = 400;
$operator = '>=';
eval("\$result = $value$operator 400;");

if ($result) {
    echo 'Something';
}

いいえ、これがよりクリーンであるということは、使用できるという意味ではありません。あなたがこれを使うなら、私はあなたを追い詰めるつもりです;)

于 2012-07-23T21:14:26.133 に答える