Php 跨阵列添加

Php 跨阵列添加,php,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

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


有人能帮我做一个函数吗?

比方说,您在$\u会话中有以下数组:

注意:下面的答案假设这3个会话值中的数组长度相等

您需要创建新数组来存储结果:

$newArrayResult = array();
之后,您将需要执行for…每个循环以提取当前访问的密钥:

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

说明到目前为止你尝试了什么。或者你认为我们会为你建一个吗?不,我没有,但我试过了…可能不值得发布。好的,谢谢。我已经有一段时间没有使用PHP了,我对使用数组不是特别精通。为了检查我的理解,如果我想得到AggregateQuaty。我会这样做:为$I=0$i$value{if$value=$\u SESSION[item_id][$i]{//使用itemID对折扣$aggregateQty=$value;}}}}的聚合计数。您是否尝试过我给您的代码?这是一个独立的脚本。只需复制粘贴到文本文件并运行它。你应该能够掌握它的基本概念。
$_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);