PHPの文字列をif条件文に変換する方法

WBOY
リリース: 2016-06-23 13:26:54
オリジナル
1771 人が閲覧しました

例: $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;	}
ログイン後にコピー

eval() があれば、純粋な数値の場合を解決できます。文字列に英字が含まれている場合、エラーが報告されます。 さて、上記の状況が発生した場合はどうすればよいでしょうか?


2<=2 && 2>=1 && (snb === snb || snb === hfu)

それ自体は正当な PHP 条件式ではありません。たとえ if に直接書いたとしても、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;	}
ログイン後にコピー
ログイン後にコピー

そうですね、最初の段落の $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;	}
ログイン後にコピー
ログイン後にコピー

そうですね、最初の段落の $condition と 2 番目の段落の if の内容は同等です。ただ、一方が文字列で、もう一方が通常の if 条件であるだけです。
2 番目の段落は問題なく実行されます

最初の段落で eval() を呼び出すと、未定義定数エラーが報告されます。ここでエスケープする必要がありますか?

あなたの本来の意図は ('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;    }
ログイン後にコピー

あー、解決しました、マスターさん

ありがとう、マスターさん。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!