2017-02-14 40 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)