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。

我可以根据 ID 从数组中删除成分没有问题,但是如果我将相同的成分放入两次,我将无法区分它们。我想知道是否可以在 ID 密钥中添加一个增量数字?

4

3 回答 3

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

?>
于 2013-05-01T10:24:07.910 回答
0

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

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

这会给你

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

)

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

于 2013-05-01T10:12:11.160 回答
-1

将您插入的数组更改为:

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

我在我的程序中使用它。

于 2013-05-01T10:30:28.740 回答