我以非正统的方式构建项目信息,它存储在三个不同的数组中并通过密钥相关联。我期待通过ItemID汇总数量。
1. Array #1 ItemID
$_SESSION["item_id"][]
1 => 1, 2 => 1, 3 =>2
2. Array #2 Size
$_SESSION["size"][]
1 => S, 2 => L, 3 =>S
3. Array #3 Quantity
$_SESSION["count"][]
1 => 250, 2 =>750, 3=>250
结果应如下:
ItemID#1 - >数量1000
ItemID#2 - >数量250
有人可以帮我一个功能吗?
答案 0 :(得分:0)
我们假设您在$_SESSION
中有以下数组:
$_SESSION['item_id'] = array(1, 1, 2);
$_SESSION['size'] = array('S', 'L', 'S');
$_SESSION['count'] = array(250, 750, 250);
注意:以下答案假定这3个SESSION值中的数组长度相等。
您需要创建新数组来存储结果:
$newArrayResult = array();
之后,您需要执行for...each
循环来提取当前访问的密钥:
foreach($_SESSION['item_id'] as $key => $value){
//the logic goes here
}
接下来,我们将使用item_id作为$ newArrayResult中的数组键。为此,我们需要先检查,如果已经定义的话。如果没有,请使用默认值0
创建密钥。我们使用名为array_key_exists
的内置函数进行检查。这样,我们将避免遇到未定义的键索引错误。
if(!array_key_exists($value, $newArrayResult)){
$newArrayResult[$value] = 0;
}
获得$ newArrayResult的密钥之后,下一步就是将计数值存储到其中:
$newArrayResult[$value] += $_SESSION['count'][$key];
完成。打印结果进行测试:
print_r($newArrayResult);
以下是整个代码,供您复制粘贴。不要忘记先阅读并理解上述流程:
$_SESSION['item_id'] = array(1, 1, 2);
$_SESSION['size'] = array('S', 'L', 'S');
$_SESSION['count'] = array(250, 750, 250);
$newArrayResult = array();
foreach($_SESSION['item_id'] as $key => $value){
if(!array_key_exists($value, $newArrayResult)){
$newArrayResult[$value] = 0;
}
$newArrayResult[$value] += $_SESSION['count'][$key];
}
print_r($newArrayResult);