跨数组添加

时间:2012-12-19 02:50:05

标签: php

我以非正统的方式构建项目信息,它存储在三个不同的数组中并通过密钥相关联。我期待通过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

有人可以帮我一个功能吗?

1 个答案:

答案 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);