-3

string に演算子があります。

 $c['operator'] = ">=";

        if($sub_total.$c['operator'].$c['value'])
        {
        echo $sub_total.$c['operator'].$c['value'];

        }

出力が得られます20610>=30000

4

6 に答える 6

4

可能な演算子を a に入れますswitch:

$result = null;

switch($c['operator'])
{

    case '>=':
        $result = $sub_total >= $c['value'];
    break;
    case '<=':
        $result = $sub_total <= $c['value'];
    break;

    // etc etc

}

これは を使用するよりもはるかに安全でevalあり、入力をサニタイズするという追加の利点があります。

于 2012-10-19T13:08:13.173 に答える
1

文字列は、使用しない限り、php コードとして解釈できませんeval(注意してください)。

ステートメントの例で行っているのは、if文字列を連結することです。連結後nullの文字列は評価されないtrueため、ifステートメントが実行されます。

あなたの場合の解決策は、@adamが彼のソリューションに書いたように、どの演算子が使用されているかを確認することです。

ところで、ロジックを文字列 (および場合によってはスクリプトの外側) に含めることはお勧めできません。

于 2012-10-19T13:06:54.640 に答える
1

$sub_total.$c['operator'].$c['value']は比較ではなく、文字列連結です。塗りつぶされた文字列は PHP では常に true であるため、if-statement は常にtrueです。

于 2012-10-19T13:07:02.767 に答える
0

PHP evalを使用して、作成したコードを評価します。

$c['operator'] = ">=";

if(eval($sub_total.$c['operator'].$c['value']))
{
    echo $sub_total.$c['operator'].$c['value'];          
} 
于 2012-10-19T13:07:16.357 に答える
0

PHP でそれを行うことはできません。以下のようにする必要があります。

if ($c['operator'] == '>=' and $sub_total >= $c['value']) {
    // Do something
} else if ($c['operator'] == '<=' and $sub_total <= $c['value']) {
    // Do something else
} // etc...
于 2012-10-19T13:08:49.060 に答える
0

eval メソッドを見てみましょう。とても危険ですが

http://php.net/manual/en/function.eval.php

于 2012-10-19T13:09:30.570 に答える