ホームページ >バックエンド開発 >PHPチュートリアル >PHPの文字列をif条件文に変換する方法
例: $condition = "2 == 2 && 3 == 5" if ($condition) ;エコー 1;このように直接判定すると文字列定数とみなされ、値は true になります
ディスカッションへの返信(解決策)
if (eval("return $condition;")) {
$condition = "2<=2 && 2>=1 && (snb === snb || snb === hfu)"; if (eval("return $condition;")) { echo 1; }else { echo 2; }
2c8d69a23a9c9c570392e388612ba1808=1 && (snb === snb || snb === hfu)
$condition = "2<=2 && 2>=1 && (snb === snb || snb === hfu)"; if (eval("return $condition;")) { echo 1; }else { echo 2; } if (2<=2 && 2>=1 && ('snb' === 'snb' || 'snb' === 'hfu')) { echo 3; }そうですね、最初の段落の $condition と 2 番目の段落の if の内容は同等です。ただ、一方が文字列で、もう一方が通常の if 条件であるだけです。
2 番目の段落は問題なく実行されます
最初の段落で eval() を呼び出すと、未定義定数エラーが報告されます。ここでエスケープする必要がありますか?
$condition = "2<=2 && 2>=1 && (snb === snb || snb === hfu)"; if (eval("return $condition;")) { echo 1; }else { echo 2; } if (2<=2 && 2>=1 && ('snb' === 'snb' || 'snb' === 'hfu')) { echo 3; }
あなたの本来の意図は ('snb' === 'snb' || 'snb' === 'hfu') でしたが、 $ 記号 存在しない変数は当然定数として理解されますが、定数を定義していません。
変数を使用して変換します。そうでない場合、snb と hfu は定数として解釈されます。
$snb="snb";$hfu="hfu"; $condition = '2<=2 && 2>=1 && ($snb === $snb || $snb === $hfu)'; if (eval("return $condition;")) { echo 1; }else { echo 2; }
ありがとう、マスターさん。