2013-12-11 95 views
0
foreach($item_cost as $node) { 
      if($node->textContent != "$0" || $node->textContent != "$0.00" || $node->textContent != "S$0" || $node->textContent != "S$0.00"){ 
       $price = $node->textContent; 
       break; 
      } 
     } 

我試圖讓它跳過0.00和搶到第一價值發現如17.50休息不能正常工作

我仍然得到0.00

+0

什麼是'$節點 - > textContent'的確切價值? –

+0

這不是什麼問題。 –

回答

1

試圖改變自己,如果條款,以這樣的:

foreach($item_cost as $node) { 
    if (!in_array($node->textContent, array("$0","$0.00","S$0","S$0.00"))) { 
    $price = $node->textContent; 
    break; 
    } 
} 

更易於閱讀和更好地工作。

如果你需要所有的價格(不只是第一)這樣使用它:

$prices = array(); 

foreach($item_cost as $node) { 
    if (!in_array($node->textContent, array("$0","$0.00","S$0","S$0.00"))) { 
    $prices[] = $node->textContent; 
    } 
} 

現在$prices陣列包括所有非空值。

+0

不錯,謝謝。哦,你,但是當我有休息的,我沒有得到任何結果,如果我刪除它,呼應我得到一些結果 – TransformBinary

+0

突破;退出整個foreach -loop,但在此之前它爲$ price分配值。那麼你需要獲得所有非空的值嗎? – Hardy

+0

我只需要得到1 Value就好像$ price = $ node-> textContent;該值不會在變量中更新。我試過$價格=「asdasdasd」和它的更新在$ – TransformBinary

1

你的二元運算符應&&和不||,因爲$node->textContent必須不等於任何給定的字符串值。

if($node->textContent != "$0" && $node->textContent != "$0.00" && $node->textContent != "S$0" && $node->textContent != "S$0.00"){ 

或者,你可以考慮一個正則表達式匹配反對的東西,是值得零美元的美元或新加坡元:

if (!preg_match('/^S?\$0(\.00)?$/', $node->textContent)) { 
    $price = $node->textContent; 
    break; 
} 

或者,使用in_array()用一組固定的值相匹配反對。

+0

如果我把&&,這是否意味着所有的條件都得到滿足?但是每個文本並不一次具有所有條件。他們一次只能有一種情況? – TransformBinary

+0

@TransformBinary是的,所有的條件必須得到滿足,在這個意義上,變量不能等於*值的任何*。 –