我从具有多个条目的数据构建多维数组,但有些条目具有相同的值;
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
}
基本上我想检查相同名称值出现的次数,并将总重量值加在一起。
然后每个"交付"同名"名称"将交货重量除以"名称"的总重量。并获得我将用于计算"名称" ..
的总成本百分比的百分比答案 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);