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 メソッドを見てみましょう。とても危険ですが