欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

如何把这两个函数相同的键值相加形成新的数组。

程序员文章站 2024-01-18 22:06:40
...
$t1=Array ( [0] => 1320 [1] => 990 [2] => 895 [3] => 790 [4] => 775 [5] => 745 [6] => 740 [7] => 680 [8] => 665 [9] => 535 )
$t2=Array ( [0] => 南昌 [1] => 赣州 [2] => 吉安 [3] => 九江 [4] => 南昌 [5] => 九江 [6] => 萍乡 [7] => 省外 [8] => 南昌 [9] => 九江 )

$t1和$t2的长度一样,且他们的值都是相互对应的,
比如
[0] => 1320
[0] => 南昌
代表南昌的数字是1320,我现在想把里面的$t2里面的如果相同的分别相加。

比如,里面的南昌
[0] => 1320
[0] => 南昌
---------------------
[4] => 775
[4] => 南昌
-----------------
[8] => 665
[8] => 南昌
怎么把这三个数字相加。

形成一个下面的数组:
$t3=Array ( [2760] => 南昌 [990] => 赣州 [895] => 吉安 [2070] => 九江 [740] => 萍乡 [680] => 省外 ) ?
如果用array_combine函数的话,请考虑一下键名相同被忽略的情况。


回复讨论(解决方案)

$t1 = array ( 0 => 1320, 1 => 990, 2 => 895, 3 => 790, 4 => 775, 5 => 745, 6 => 740, 7 => 680, 8 => 665, 9 => 535 );$t2 = array ( 0 => '南昌', 1 => '赣州', 2 => '吉安', 3 => '九江', 4 => '南昌', 5 => '九江', 6 => '萍乡', 7 => '省外', 8 => '南昌', 9 => '九江' ); foreach($t2 as $i=>$k) @$t3[$k] += $t1[$i];$t3 = array_flip($t3);print_r($t3);
Array ( [2760] => 南昌 [990] => 赣州 [895] => 吉安 [2070] => 九江 [740] => 萍乡 [680] => 省外 )

$t1 = array ( 0 => 1320, 1 => 990, 2 => 895, 3 => 790, 4 => 775, 5 => 745, 6 => 740, 7 => 680, 8 => 665, 9 => 535 );$t2 = array ( 0 => '南昌', 1 => '赣州', 2 => '吉安', 3 => '九江', 4 => '南昌', 5 => '九江', 6 => '萍乡', 7 => '省外', 8 => '南昌', 9 => '九江' ); foreach($t2 as $i=>$k) @$t3[$k] += $t1[$i];$t3 = array_flip($t3);print_r($t3);
Array ( [2760] => 南昌 [990] => 赣州 [895] => 吉安 [2070] => 九江 [740] => 萍乡 [680] => 省外 )

如果出现键名相同的情况?怎么办? 比如,
Array ( [990] => 南昌 [990] => 赣州 [895] => 吉安 [2070] => 九江 [740] => 萍乡 [680] => 省外 )

这样子的情况,就会被覆盖一个,怎么办呢?

那没办法,你的方案先天不足!

那没办法,你的方案先天不足!
$t1=Array ( [0] => 1320 [1] => 990 [2] => 895 [3] => 790 [4] => 775 [5] => 745 [6] => 740 [7] => 680 [8] => 665 [9] => 535 )
$t2=Array ( [0] => 南昌 [1] => 赣州 [2] => 吉安 [3] => 九江 [4] => 南昌 [5] => 九江 [6] => 萍乡 [7] => 省外 [8] => 南昌 [9] => 九江 )

那我想计算出 t2,里面的不相同的数值分别有多少,有什么办法吗?


那没办法,你的方案先天不足!
$t1=Array ( [0] => 1320 [1] => 990 [2] => 895 [3] => 790 [4] => 775 [5] => 745 [6] => 740 [7] => 680 [8] => 665 [9] => 535 )
$t2=Array ( [0] => 南昌 [1] => 赣州 [2] => 吉安 [3] => 九江 [4] => 南昌 [5] => 九江 [6] => 萍乡 [7] => 省外 [8] => 南昌 [9] => 九江 )

那我想计算出 t2,里面的不相同的数值分别有多少,有什么办法吗?

可以做一个$t11= 这个是记录值的,
$t22=这个是记录地区的。
这样子可以确保不会出现重名的情况,但是不知道这样子能不能计算相加相同的。