数组中有多个相同的值并在外部使用

时间:2016-06-20 09:56:04

标签: php arrays multidimensional-array

我从具有多个条目的数据构建多维数组,但有些条目具有相同的值;

id      name      delivery#  weight    time
--------------------------------------------
12      test      112233     45        now
13      test      112234     456       now
14      testA     112245     33        later
15      testB     334421     334       later
...
...

和foreach id我像这样推送到数组;

array_push($arraydata, array(
"id" => $id, 
"name" => $name,
"delivery" => $delivery,
"weight" => $weight,
"time" => $time
));

以后我用它来循环它;

foreach($arraydata as $arraydataItem) {

//do stuff...
//test appears twice - echo count & delivery values
//testA once - echo count
//testB once - echo count

}

基本上我想检查相同名称值出现的次数,并将总重量值加在一起。

然后每个"交付"同名"名称"将交货重量除以"名称"的总重量。并获得我将用于计算"名称" ..

的总成本百分比的百分比

1 个答案:

答案 0 :(得分:2)

不是使用array_push()创建那个关联数组,而应该像这样创建一个多维数组,

$arraydata[$name][] = array('id' => $id, 'delivery' => $delivery, 'weight' => $weight, 'time' => $time); 

根据你的问题,

  

基本上我想检查相同名称值出现的次数,并将总重量值加在一起。

只需使用foreach循环遍历$arraydata数组并显示每个名称的计数和总权重,如下所示:

foreach($arraydata as $key => $arraydataItem){
    // Display count and total weight associated for each name
    echo $key . ": (count: " . count($arraydataItem) . ", total weight: " . array_sum(array_column($arraydataItem,'weight')) . ")<br />";
}

这将输出:

test: (count: 2, total weight: 501)
testA: (count: 1, total weight: 33)
testB: (count: 1, total weight: 334)

此外,您可以调整此代码以满足您的进一步要求。

注意:如果您想查看$arraydata数组的结构,请执行var_dump($arraydata);