簡體   English   中英

PHP-如果條件在字符串內

[英]PHP - if condition inside string

一個簡單的問題要問,希望不要傻。

$var=0;
$condition="$var!=0";
if($condition) {
    # do something #
}
else {
    # do something else #
}

顯然,那里的代碼無法按預期工作。 是否有一種從字符串獲取if條件的好方法? 還是我必須以某種令人不安的方式解析字符串?

編輯我沒有很好地解釋自己。 事實是字符串可以包含您可以想象的任何可能的條件:

  • $ var> 0
  • $ var <0
  • $ var == 0
  • 等等

我從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 #
}
  1. $condition的內容不是$var!=0 ,而是0=0 (由於$不能在雙引號內轉義( \\$ )。

  2. 您可以使用eval函數執行此操作。

  3. 但是, eval是邪惡的。 問問自己是否真的需要這樣做。 如果還有其他方法,請采取。

好,您可以使用邪惡的Eval。 但是,如果您的條件實際上像您建議的那么簡單,則可以使用正則表達式測試條件...不需要評估。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM