2013-05-01 80 views
0

我正在使用SESSION變量來保存添加到配料頁的項目。我想知道如何唯一標識陣列中的每個鍵。確定要修改哪個鍵

我通過以下添加成分,它工作正常。

$_SESSION['ingredients'][] = array($_POST['ingredient'],$_POST['qty']); 

如果我堅持在那裏的幾個成分和打印陣列我得到..

Array ([0] => 1 [1] => 50) Array ([0] => 2 [1] => 50) Array ([0] => 3 [1] => 50) 

其中,1,2和3的成分標識。

我可以根據他們的ID從陣列中刪除成分沒有問題,但如果我把兩次相同的成分,我將無法區分它們。我想知道如果我可以添加一個增量號碼來識別鑰匙?

+0

如何添加和刪除它們?有沒有一種方式與此? – Anigel 2013-05-01 10:11:47

回答

0

$ _SESSION ['ingredients']中的每個項目都有一個唯一的索引(從您的案例中的0開始)。當您打印$ _SESSION [「成分」]數組,你應該得到這樣的:

Array ([0] => Array ([0] => 1 [1] => 20) [1] => Array ([0] => 2 [1] => 20) [2] => Array ([0] => 1 [1] => 10)) 

注意,每個陣列組合擁有它前面(從0開始)的索引

下面的代碼演示了這一點:

<?php 

session_start(); 
unset($_SESSION['ingredients']); 

$_SESSION['ingredients'][] = array(1, 20); 
$_SESSION['ingredients'][] = array(2, 20); 
$_SESSION['ingredients'][] = array(1, 10); // adding the same ingredient again 

print_r($_SESSION['ingredients']); 

?> 
+0

謝謝,我在通過$ rows分割後打印數組。 Oopsie。 – Scott 2013-05-01 10:53:08

0

爲什麼不使用成分標識作爲會話數組中的鍵,然後每個值追加到它作爲一個元素

$_SESSION['ingredients'][$_POST['ingredient']][] = $_POST['qty']; 

這將使你

Array(
    [1] => array(
     [0] => 50, 
     [1] => 50 
    ) 

) 

只是一個想法,我不知道這是否適合您的使用情況

-1

您插入陣列改成這樣:

$_SESSION['ingredients'][count($_SESSION['ingredients'])] = array($_POST['ingredient'],$_POST['qty']); 

我用它在我的程序。

+0

實際區別是什麼? – Sirko 2013-05-01 10:33:13

+0

對不起,我改變了它。 – user2339029 2013-05-01 10:37:39

+0

這實際上對OP的解決方案沒有任何影響。兩種方法的索引都是一樣的! – Sirko 2013-05-01 10:40:53