string に演算子があります。
$c['operator'] = ">=";
if($sub_total.$c['operator'].$c['value'])
{
echo $sub_total.$c['operator'].$c['value'];
}
出力が得られます20610>=30000
string に演算子があります。
$c['operator'] = ">=";
if($sub_total.$c['operator'].$c['value'])
{
echo $sub_total.$c['operator'].$c['value'];
}
出力が得られます20610>=30000
可能な演算子を a に入れますswitch
:
$result = null;
switch($c['operator'])
{
case '>=':
$result = $sub_total >= $c['value'];
break;
case '<=':
$result = $sub_total <= $c['value'];
break;
// etc etc
}
これは を使用するよりもはるかに安全でeval
あり、入力をサニタイズするという追加の利点があります。
文字列は、使用しない限り、php コードとして解釈できませんeval
(注意してください)。
ステートメントの例で行っているのは、if
文字列を連結することです。連結後null
の文字列は評価されないtrue
ため、if
ステートメントが実行されます。
あなたの場合の解決策は、@adamが彼のソリューションに書いたように、どの演算子が使用されているかを確認することです。
ところで、ロジックを文字列 (および場合によってはスクリプトの外側) に含めることはお勧めできません。
$sub_total.$c['operator'].$c['value']
は比較ではなく、文字列連結です。塗りつぶされた文字列は PHP では常に true であるため、if
-statement は常にtrue
です。
PHP evalを使用して、作成したコードを評価します。
$c['operator'] = ">=";
if(eval($sub_total.$c['operator'].$c['value']))
{
echo $sub_total.$c['operator'].$c['value'];
}
PHP でそれを行うことはできません。以下のようにする必要があります。
if ($c['operator'] == '>=' and $sub_total >= $c['value']) {
// Do something
} else if ($c['operator'] == '<=' and $sub_total <= $c['value']) {
// Do something else
} // etc...
eval メソッドを見てみましょう。とても危険ですが