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

如何获取对应数组的结果。形成新的对应数组

程序员文章站 2022-06-08 22:50:29
...
本帖最后由 qq914260102 于 2013-10-30 10:58:39 编辑 $t1 = Array ( 0 => '南昌', 1 => '南昌', 2 => '赣州', 3 => '九江', 4 => '赣州', 5 => '九江');
$t2 = Array ( 0 => '优秀', 1 => '良好', 2 => '优秀', 3 => '良好', 4 => '优秀', 5 => '差等' );

比如,我有上面两个数组。$t1【0】和$t2【0】....$t1【i】和$t2【i】是有对应关系的,$t1【0】和$t2【0】代表=====南昌,优秀。

我想把$t1去重形成一个新的数组$t11 = Array ( 0 => '南昌', 1 => '赣州', 2 => '九江');
同时对$t2进行拆分。形成三个新的数组(分别统计$t11数组对应的优秀、良好、差等)。分别和$t11关联。

南昌,赣州 九江优秀的数目统计。(根据$t2去计算优良差的个数)
优秀的数组如下
$t2_yx=Array ( 0 => '1', 1 => '2', 2 => '0' );

良好的数组如下
$t2_lh=Array ( 0 => '1', 1 => '0', 2 => '1' );
差等的数组如下
$t2_cd=Array ( 0 => '0', 1 => '0', 2 => '1' );

请问用程序什么实现。。感谢。

回复讨论(解决方案)

//第一步$t1 = Array ( 0 => '南昌', 1 => '南昌', 2 => '赣州', 3 => '九江', 4 => '赣州', 5 => '九江'); $t2 = Array ( 0 => '优秀', 1 => '良好', 2 => '优秀', 3 => '良好', 4 => '优秀', 5 => '差等' );$t = array_map(null, $t1, $t2);print_r($t);/* 得到Array(    [0] => Array        (            [0] => 南昌            [1] => 优秀        )    [1] => Array        (            [0] => 南昌            [1] => 良好        )    [2] => Array        (            [0] => 赣州            [1] => 优秀        )    [3] => Array        (            [0] => 九江            [1] => 良好        )    [4] => Array        (            [0] => 赣州            [1] => 优秀        )    [5] => Array        (            [0] => 九江            [1] => 差等        ))*///第二步$r = array();foreach($t as $v) {  $r[$v[0]][] = $v[1];}print_r($r);/*得到Array(    [南昌] => Array        (            [0] => 优秀            [1] => 良好        )    [赣州] => Array        (            [0] => 优秀            [1] => 优秀        )    [九江] => Array        (            [0] => 良好            [1] => 差等        ))*///第三步$r = array_map('array_count_values', $r);print_r($r);/*得到Array(    [南昌] => Array        (            [优秀] => 1            [良好] => 1        )    [赣州] => Array        (            [优秀] => 2        )    [九江] => Array        (            [良好] => 1            [差等] => 1        ))

接下来就不用说了

接下来就不用说了

请高人指点咯。还是不太清楚。

//第一步$t1 = Array ( 0 => '南昌', 1 => '南昌', 2 => '赣州', 3 => '九江', 4 => '赣州', 5 => '九江'); $t2 = Array ( 0 => '优秀', 1 => '良好', 2 => '优秀', 3 => '良好', 4 => '优秀', 5 => '差等' );$t = array_map(null, $t1, $t2);print_r($t);/* 得到Array(    [0] => Array        (            [0] => 南昌            [1] => 优秀        )    [1] => Array        (            [0] => 南昌            [1] => 良好        )    [2] => Array        (            [0] => 赣州            [1] => 优秀        )    [3] => Array        (            [0] => 九江            [1] => 良好        )    [4] => Array        (            [0] => 赣州            [1] => 优秀        )    [5] => Array        (            [0] => 九江            [1] => 差等        ))*///第二步$r = array();foreach($t as $v) {  $r[$v[0]][] = $v[1];}print_r($r);/*得到Array(    [南昌] => Array        (            [0] => 优秀            [1] => 良好        )    [赣州] => Array        (            [0] => 优秀            [1] => 优秀        )    [九江] => Array        (            [0] => 良好            [1] => 差等        ))*///第三步$r = array_map('array_count_values', $r);print_r($r);/*得到Array(    [南昌] => Array        (            [优秀] => 1            [良好] => 1        )    [赣州] => Array        (            [优秀] => 2        )    [九江] => Array        (            [良好] => 1            [差等] => 1        ))

接下来就不用说了

请高人说完。。谢谢了。

请高人说完。。谢谢了。

其实说的够明显了,稍微改一下代码

$t1 = Array ( 0 => '南昌', 1 => '南昌', 2 => '赣州', 3 => '九江', 4 => '赣州', 5 => '九江'); 		$t2 = Array ( 0 => '优秀', 1 => '良好', 2 => '优秀', 3 => '良好', 4 => '优秀', 5 => '差等' );		$t = array_map(null, $t1, $t2);				$r = array();		foreach($t as $v) {		  $r[$v[1]][] = $v[0];		}				$r = array_map('array_count_values', $r);		dump($r);//--------------------------------array(3) {  ["优秀"] => array(2) {    ["南昌"] => int(1)    ["赣州"] => int(2)  }  ["良好"] => array(2) {    ["南昌"] => int(1)    ["九江"] => int(1)  }  ["差等"] => array(1) {    ["九江"] => int(1)  }}


换种显示方式总该可以了吧。