如果在php

时间:2018-03-10 07:15:31

标签: php

如果在php

中获取重复元素,则添加数组元素
$a=[3.00,3.00,8.00,3.00,13.00]
$b=[0.11,0.45,0.22,0.90,0.44]

结果应该是:

$c=[3.00,8.00,13.00]
$d=[1.46(0.11+0.45+0.90),0.22,0.44]

3 个答案:

答案 0 :(得分:2)

就像我不喜欢添加isset逻辑一样,我创建了一个唯一键的数组,然后创建一个起始数组,其值为和值的0值。然后将初始数组与唯一数组匹配,并在...中添加值

$a=[3.00,3.00,8.00,3.00,13.00];
$b=[0.11,0.45,0.22,0.90,0.44];

$c = array_values(array_unique($a));
$d = array_fill(0, count($c), 0);
foreach ( $a as $key => $value )    {
    $d[ array_search($value, $c) ] += $b[$key];
}

print_r($c);
print_r($d);

答案 1 :(得分:0)

你可以用循环来做到这一点,如下所示:

$C,D; //That be inizialite like array
for ($i = 0; $i <= count($A); $i++)
    if (array_key_exists($A[$i], $C))
        $D[array_search($A[$i], $C)]+=$B[$i];
    else
        {array_push($C,$A[$i]);
         array_push($D,$B[$i]);
        }

我不确定是否有效,但逻辑就是这样。

答案 2 :(得分:0)

<?php
$a = [3.00, 3.00, 8.00, 3.00, 13.00];
$b = [0.11, 0.45, 0.22, 0.90, 0.44];
$c = array();
$d = array();

foreach ($a as $index => $per_a) {
    if (!in_array($per_a, $c)) {
        array_push($c, $per_a);
        array_push($d, $b[$index]);
    }
    else {
        $pos = array_search($b[$index], $d);
        $d[$pos] += $b[$index];
    }
}

print_r($c);
print_r($d);