我正在使用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从阵列中删除成分没问题,但如果我将相同的成分分成两次,我将无法区分它们。我想知道我是否可以为密钥添加一个增量号码?
答案 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']);
我在我的程序中使用它。