确定要修改的密钥

时间:2013-05-01 10:08:33

标签: php arrays session

我正在使用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。

我可以根据他们的ID从阵列中删除成分没问题,但如果我将相同的成分分成两次,我将无法区分它们。我想知道我是否可以为密钥添加一个增量号码?

3 个答案:

答案 0 :(得分:0)

为什么不使用成分id作为会话数组中的键,然后将每个值作为元素附加到它

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

这会给你

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

)

只是想一想,我不知道这是否适用于您的用例

答案 1 :(得分:0)

$ _SESSION ['ingredients']中的每个项目都有一个唯一索引(在你的情况下从0开始)。当你打印$ _SESSION ['ingredients']数组时,你应该得到这个:

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']);

?>

答案 2 :(得分:-1)

将插入的数组更改为:

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

我在我的程序中使用它。