两个数组如何按照其中一个相同的相加形成新数组
程序员文章站
2024-01-02 21:45:52
...
$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里面把对于键名的相加。
Array ( [0] => 2760 [1] => 990 [2] => 895 [3] => 2070 [6] => 740 [7] => 680 )
Array ( [0] => 南昌 [1] => 赣州 [2] => 吉安 [3] => 九江 [6] => 萍乡 [7] => 省外 )
应该直接写代码 比打字说流程要快....
Array ( [0] => 2760 [1] => 990 [2] => 895 [3] => 2070 [6] => 740 [7] => 680 )
Array ( [0] => 南昌 [1] => 赣州 [2] => 吉安 [3] => 九江 [6] => 萍乡 [7] => 省外 )
应该直接写代码 比打字说流程要快....
感谢了。
$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] => 省外 )
应该直接写代码 比打字说流程要快....
感谢了。