-2

我以一种非正统的方式构造了 item 信息,它存储在三个不同的数组中,并通过 key 关联。我希望按 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

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

4

1 回答 1

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);
于 2012-12-19T03:22:55.330 回答