您好,欢迎访问一九零五行业门户网

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

本帖最后由 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) }}
换种显示方式总该可以了吧。
其它类似信息

推荐信息