如何根据类似的第一维值处理数组的第二维?

时间:2012-02-03 07:21:15

标签: php arrays multidimensional-array

我正在尝试编写一些PHP代码来处理基于第一维值的类似值的数组的第二维值。

以下是示例输出。

[0] => Array (
             [0] => 1
             [1] => 0.091238491238491
       )
[1] => Array (
             [0] => 2
             [1] => 0.2221793635487
       )
[2] => Array (
             [0] => 2
             [1] => 0.10662717512033
       )
[3] => Array (
             [0] => 4
             [1] => 0.44354338998346
       )
[4] => Array (
             [0] => 6
             [1] => 0.2248243559719
       )
[5] => Array (
             [0] => 6
             [1] => 0.31764705882353
       )
[6] => Array (
             [0] => 6
             [1] => 0.15764625384879
       )
[7] => Array (
             [0] => 6
             [1] => 0.19160083160083
       )
[8] => Array (
             [0] => 12
             [1] => 0.31054875069499
       )
[9] => Array (
             [0] => 12
             [1] => 0.10915034227918
       )
[10] => Array (
             [0] => 15
             [1] => 0.32915461266474
       )
 //...........goes to 46000 elements

现在我想要做的是,如果每个数组的索引0值相似,那么我想添加索引1的值。 因此,例如,如果4个数组的0个索引值相同,我想添加所有4个数组的索引1值。 如果第0个索引上有唯一值,则不要添加任何内容,只需存储索引1的值并继续。

非常感谢。 GHANSHYAM

2 个答案:

答案 0 :(得分:2)

$added = array();
foreach ($array as $item) {
    if (isset($added[$item[0]])) {
        $added[$item[0]] += $item[1];
    } else {
        $added[$item[0]] = $item[1];
    }
}

答案 1 :(得分:0)

$p=0;
$temp =  $final_prod_ex[0][1];
for($x=0; $x<count($final_prod)-1; $x++){
    if($final_prod_ex[$x][0]==$final_prod_ex[$x+1][0]){
        $temp = $temp + $final_prod_ex[$x+1][1];
    }
    else{
        $ans[$p] = $temp."    ".$final_prod_ex[$x][0];
        $temp = $final_prod_ex[$x+1][1];
        $p++;
    }
}

经过深思熟虑(我是编程新手)后终于弄明白了...... Array的名字是$ final_prod_ex。如果我能做得更好,请对此进行评论。对不起@deceze。我无法理解你的解决方案。我知道你试图将一个数组的值作为另一个数组的索引。但情况是,这个值不像0,1,2,3,4 ....它像1,3,5,6,7,10。我们之间缺少数字。也许我不理解你的解决方案。如果我错了,请纠正我。 感谢您的帮助。