Home > Backend Development > PHP Tutorial > 两个数组如何按照其中一个相同的相加形成新数组

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

WBOY
Release: 2016-06-23 14:25:07
Original
1258 people have browsed it

$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);
Copy after login
Copy after login

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);
Copy after login
Copy after login

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

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template