2017-02-14 32 views
0

中分隔值我有一个由多个产品SKU和它们各自的量的变量,像这样:在阵列

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

我可以爆炸这一点,并获得数组:

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

如何我是否会对每个项目和每个数量执行一项功能,只要它们存在?

举个例子,我要检查的SKU在Magento,看看我的数组中列出的数量可用于每个SKU上市:

的SKU的阵列会有所不同的数量,并且时时会成为每个SKU后的数量。

一个foreach实际上工作吗?

+0

闻起来像坏的数据库设计我 –

+0

究竟你的意思是,“检查对我的数据库“?您只想查看该SKU是否以该数量存在?你想选择什么吗?只是猜测,你可能会想要做一些事情,把你的SKU和数量分开放入单独的数组中,用逗号分解它们,并形成某种类型的查询,如'select * from mydb where SKU in($ SKUs)'或类似的东西。 – alanlittle

+0

不是没有问题。如果我必须解释这一部分:我们的库存系统无法识别Magento中的捆绑项目。将项目分成单独的项目,同时仍然保持捆绑折扣尚未解决。话虽如此,我们正在利用一个简单的项目,其中列出了包中所有包含的skus和所需数量的属性,以确定将显示的库存状态。 – Ken

回答

0

你说的是这样的:

$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)