【问题标题】:Separating Values in Array分隔数组中的值
【发布时间】:2017-02-14 17:49:26
【问题描述】:

我有一个包含多个产品 sku 及其各自数量的变量,如下所示:

$components = "SKUA,2,SKUB,2,SKUC,1,SKUD,2"

我可以分解它并得到数组:

  $items = explode(";",$components);
    foreach($items as $item) {
      echo $item . '|';
      }

只要存在,我将如何针对每个项目和每个数量执行功能?

例如,我想检查 Magento 中的 SKU,看看我的数组中列出的数量是否适用于列出的每个 SKU:

数组中的 SKU 数量会有所不同,并且每个 SKU 后面总会有一个数量。

foreach 真的有用吗?

【问题讨论】:

  • 我觉得数据库设计不好
  • “对照我的数据库检查”到底是什么意思?您只想查看该 SKU 是否存在该数量?你想选择什么吗?只是猜测,您可能想要做一些事情将您的 SKU 和数量分成单独的数组,用逗号将它们内爆,并形成某种查询,如 select * from mydb where SKU in ($SKUs) 或类似的东西。
  • 不是不可能的。如果我不得不解释那部分:我们的库存系统无法识别 Magento 中的捆绑商品。将项目分成单独的行项目,同时仍然保持捆绑折扣尚未解决。话虽如此,我们正在使用一个简单的项目,该项目的属性列出了捆绑中包含的所有 sku 和所需的数量,以确定将显示的库存状态。
  • 我已经编辑了这个问题,希望能更清楚一点。

标签: php arrays


【解决方案1】:

你是在说这样的事情吗:

$components = "SKUA,2,SKUB,2,SKUC,1,SKUD,2";
$split = explode(',', $components);

$Q = [];

for ($i=0; $i<count($split); $i+=2) {
  $sku = $split[$i]; $qty = $split[$i+1];
  $Q[]= "(SKU = '$sku' AND Qty >= $qty)";
}

$Query = 'select * from mydb where '.implode(' OR ', $Q);

这会给你一个这样的查询:

select * from mydb where (SKU = 'SKUA' AND Qty >= 2) OR (SKU = 'SKUB' AND Qty >= 2) OR (SKU = 'SKUC' AND Qty >= 1) OR (SKU = 'SKUD' AND Qty >= 2)

【讨论】:

    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2020-10-09
    • 2013-07-17
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多