2013-10-22 56 views
0

我爲蹩腳的問題標題提前道歉,我無法找出總結我在句子中尋找的解決方案的好方法。在foreach循環中指定一個真/假結果

平臺是Magento/PHP,但Magento部分不是真正的問題的一部分。基本上我們有一個結帳服務(只是一個下拉框),供客戶選擇未來的訂單發貨日期。我一直負責將此服務的顯示限制在少數產品上。

  • 如果訂單包含一個或多個允許的產品,或者,若干被准許它將顯示下拉框中的產品。

  • 如果訂單包含允許和不允許的產品組合,顯然它不會顯示下拉框。

我創建了一個名爲「can_futureship」一個新的產品屬性和值設置爲True被允許船舶在未來某一日期的產品不多。我現在的問題是我似乎無法掌握選擇這些產品的最佳方法。

有一段代碼(foreach循環)遍歷購物車中的所有物品,並檢查其他物品的限制和屬性,所以我知道我需要將它放在該循環中。特別是在True和False條件混合的情況下。例如一些僞代碼:

Product1 = True 
Product2 = True 
Product3 = True 

$can_futureship_show_drop_down = false; 

foreach(Items as item) { 

    $product['can_futureship'] = model->getattribute('can_futureship'); 
    if ($product['can_futureship'] = TRUE) { 
     $can_futureship_show_drop_down = true; 
    } 
} 

這是我的思維的初始行,如果所有的產品都真或數組中的最後一個產品是事實,但我需要它在那裏結束任何虛假如果將明顯工作結果。我也在想,也許我應該將所有結果加載到數組中,並通過這種方式檢查錯誤結果?任何幫助是極大的讚賞!

+0

開始== TRUE)在if條件下需要雙'=='或'==='。 –

+0

弗雷德 - 我只是用它作爲一些僞代碼來展示我的思維過程。那裏肯定有一些嚴重的語法錯誤。 – jkphl

+0

除了未能使用比較運算符,您可能需要仔細考慮這一點。例如,如果您有兩種產品,並且只有一種產品可供將來裝運,則您的代碼無論如何都會顯示下拉菜單。 –

回答

1

想到的其他方式;可以通過改變此`如果($產物[ 'can_futureship'] = TRUE){``到如果($產物[ 'can_futureship'])

$can_ship_future = true; 
foreach($products as $product) { 
    if (! $product->canShipFuture()) { 
     $can_ship_future = false; 
     break; // Don't need to check the other products 
    } 
}