【问题标题】:Specifying a true/false result in foreach loop在 foreach 循环中指定真/假结果
【发布时间】:2013-10-22 15:39:53
【问题描述】:

我提前为这个糟糕的问题标题道歉,我想不出用一句话来总结我正在寻找的解决方案。

平台是 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;
    }
 }

这是我最初的想法,如果所有产品都为真或数组中的最后一个产品为真,显然会起作用,但如果有任何错误结果,我需要它最终为假。我还在想也许我应该将所有结果加载到一个数组中并以这种方式检查错误结果?非常感谢任何帮助!

【问题讨论】:

  • 首先将 if ($product['can_futureship'] = TRUE) { 更改为 if ($product['can_futureship'] == TRUE) { - if 条件需要双精度 =====
  • Fred - 我只是用它作为一些伪代码来展示我的思维过程。那里肯定有一些严重的语法错误。
  • 除了无法使用比较运算符,您可能需要考虑更多。例如,如果您有两种产品并且只有一种可用于未来的运输,那么您的代码无论如何都会显示下拉列表。
  • @jkphl 这就是“cmets”的含义;-)

标签: php magento


【解决方案1】:

换个思路;)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多