当前位置:Gxlcms > PHP教程 > 两个数组如何按照其中一个相同的相加形成新数组

两个数组如何按照其中一个相同的相加形成新数组

时间:2021-07-01 10:21:17 帮助过:6人阅读

$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] => 九江 )

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

$t11= Array ( [0] => 2760 [1] => 990 [2] => 895 [3] => 2070 [4] => 740 [5] => 680 )
$t22= Array ( [0] => 南昌 [1] => 赣州 [2] => 吉安 [3] => 九江 [4] => 萍乡 [5] => 省外 )

计算后的结果如上面。。就是把t2相同的去掉,同时t1里面把对于键名的相加。


回复讨论(解决方案)

先创建一个数组是 $t2数组去重后的结果(t22)

循环这个新数组(t22),对于每一个地名,去循环$t2数组. 如果这两者值(地名相同),将此时$t2对应的key 拿去$t1取值,将其加到一个新新数组($t11)的第(新数组当前循环项),并继续循环直到t22当前循环下每一个$t2的子元素都对比完毕.
继续把$t22循环完

先创建一个数组是 $t2数组去重后的结果(t22)

循环这个新数组(t22),对于每一个地名,去循环$t2数组. 如果这两者值(地名相同),将此时$t2对应的key 拿去$t1取值,将其加到一个新新数组($t11)的第(新数组当前循环项),并继续循环直到t22当前循环下每一个$t2的子元素都对比完毕.
继续把$t22循环完

请高人写代码。

$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 => '九江' ); $t22 = array_unique($t2);$t11 = array();foreach ($t22 as $key1=>$c){	foreach($t2 as $key2=>$c2){		if($c == $c2){			$t11[$key1] += $t1[$key2];		}	}}print_r($t11);print_r($t22);

Array ( [0] => 2760 [1] => 990 [2] => 895 [3] => 2070 [6] => 740 [7] => 680 )
Array ( [0] => 南昌 [1] => 赣州 [2] => 吉安 [3] => 九江 [6] => 萍乡 [7] => 省外 )
应该直接写代码 比打字说流程要快....

$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 => '九江' ); $t22 = array_unique($t2);$t11 = array();foreach ($t22 as $key1=>$c){	foreach($t2 as $key2=>$c2){		if($c == $c2){			$t11[$key1] += $t1[$key2];		}	}}print_r($t11);print_r($t22);

Array ( [0] => 2760 [1] => 990 [2] => 895 [3] => 2070 [6] => 740 [7] => 680 )
Array ( [0] => 南昌 [1] => 赣州 [2] => 吉安 [3] => 九江 [6] => 萍乡 [7] => 省外 )
应该直接写代码 比打字说流程要快....
感谢了。

人气教程排行