[英]PHP - if condition inside string
一個簡單的問題要問,希望不要傻。
$var=0;
$condition="$var!=0";
if($condition) {
# do something #
}
else {
# do something else #
}
顯然,那里的代碼無法按預期工作。 是否有一種從字符串獲取if條件的好方法? 還是我必須以某種令人不安的方式解析字符串?
編輯我沒有很好地解釋自己。 事實是字符串可以包含您可以想象的任何可能的條件:
我從xml文件中以字符串形式讀取了這種情況,所以我不知道會發現什么。
eval()
函數是此處的簡便方法。 例如:
if(eval($condition)) {
# do something #
}
else {
# do something else #
}
必須強調eval()
是邪惡的。 即使您確實知道自己在做什么,使用eval()
來使網站變得極度不安全也是非常容易的。 特別是,即使您確定該代碼現在是安全的,但在代碼的完全不同的部分中添加了一些功能之后,情況可能並非如此。
那就是說eval()
有其用途,特別是在諸如遷移腳本之類的快速且骯臟的一次性腳本中。
如果您要編寫面向世界的網站,則在使用eval()
需要特別注意。 通常,必要的護理要比實施某些non- eval()
解決方案更加困難。
只是因為還沒有人發布。 問問自己需要進行哪些比較。 如果他們正在執行簡單的數學運算,則您可能希望在架構中包含以下內容。
<conditions>
<notEqual var="var" value="0" />
</conditions>
它允許您有多個條件,應該相對簡單地進行解析並轉換為php代碼。
為什么不做:
$var = 0;
if ($var != 0){
# do something #
}
else {
# do something else #
}
編輯:甚至
$var = 0;
$condition = 0
if ($var != $condition){
# do something #
}
else {
# do something else #
}
$condition
的內容不是$var!=0
,而是0=0
(由於$
不能在雙引號內轉義( \\$
)。
您可以使用eval
函數執行此操作。
但是, eval
是邪惡的。 問問自己是否真的需要這樣做。 如果還有其他方法,請采取。
好,您可以使用邪惡的Eval。 但是,如果您的條件實際上像您建議的那么簡單,則可以使用正則表達式測試條件...不需要評估。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.