2016-02-10 121 views
0

我正在開發一款購物車,並且遇到了關於獨特購買的問題。PHP - 陣列唯一和計數元素

比方說,有一個產品「產品A」和用戶購買此產品的4倍,他們的購物車顯示了在籃下,被存儲爲「4」的項目:

$items = [ 
    "Product A" => array(), 
    "Product A" => array(), 
    "Product B" => array() 
]; 

當他們查看購物車,我想它因此顯示:

Product:   Quantity: 

"Product A"   2 
"Product B"   1 

因此,問題是,它是否可以做一個計數array_unique?所以,我可以存儲所有獨特的物品,但也可以獲得他們訂購的物品數量?還是有另一種解決這個問題的方法?

+5

您的初始數組結構是不可能的,您不能有相同的密鑰兩次......您如何存儲產品*和數量計數器*? – deceze

+2

'$ items = [「Product A」=> array(),「Product A」=> array()「]'無效,相同的鍵只能在數組中出現一次 – SOFe

+0

使用'in_array產品到購物車 –

回答

0

你可能想改變你的陣列結構:

$items = []; 

function addItem($name, array $data = []){ 
    global $items; 
    $items[$name][] = $data; 
} 

function countItem($name){ 
    global $items; 
    return count($items[$name]); 
} 

所以$items最終會是這樣的:如果它是不確定的

$items = [ 
    "Product A" => [ 
     array(), 
     array(), 
    ], 
    "Product B" => [ 
     array() 
    ] 
]; 

$array[] = $element將創建一個空數組$array。同樣,如果尚未定義,則$array["a"][] = $element將創建一個空數組$array["a"]

或者如果您只想存儲計數,則必須在使用$array["a"]++遞增之前使用if(!isset($array["a"])) $array["a"] = 0;

0

以下是邏輯。

1)創建產品購物車的空白陣列。

2)將項目添加到數組時,請檢查array_key_exists()。 3)如果不存在,則將數組添加到數組中作爲鍵和數量作爲值(這是數量)。

4)如果存在,請將數量增加1。

就是這樣。

+0

不是'in_array',而是'isset'或'array_key_exists' ...! – deceze

+0

@pupil - 謝謝你,但是我怎麼能夠在購物籃中獲得產品的總量呢? – Phorce