ホームページ >バックエンド開発 >PHPチュートリアル >PHP配列の水平行を垂直行に変換する方法
ハルビンC、東北区 76850.4600 76850.4600 76850.4600
ハルビンC、東北区 602267.1390 602267.1390 602267.1390
ハルビンC、東北区 55356.1110 55356.111 0 55356.1110
東北区瀋陽B 51855.8950 51855.8950 51855.8950
東北区瀋陽B 385946.7430 385946.7430 385946.7430
東北区瀋陽 B 1588513.5 266 1588513.5266 1588513.5266
同じ 都市の 3 つの異なる数字を同じ行に組み合わせると、次の形式になります:
東北区ハルビン C 76850.4600 602267.1390 55356.1110
東北地区瀋陽B 51855.8950 385946.7430 1588513.5266
言い換えれば、元の最後の 2 つの数字セットはもう必要ないということですか?
for($i=0;$i<count($city_arr);$i++){ $n=0; $m=0; for($j=0;$i<count($city_arr);$j++){ $m=$m+1; if(($city_arr[$i][0]==$city_arr[$j][0]) and ($city_arr[$i][1]==$city_arr[$j][1]) and ($city_arr[$i][2]==$city_arr[$j][2])) { $n=$+1; //再记录一下 每次$j的值[少于=3次的,$j值,后边赋值newcity后重新记录] } if($m==3 and $n<>3){ $newcity_arr[]= array($city_arr[$j][0],$city_arr[$j][1],$city_arr[$j][2]); $m = 0; $i = $n; } if($n == 3 and $n=$m){ $newcity_arr[]= array($city_arr[$j][0],$city_arr[$j][1],$city_arr[$j][2]); $m = 0; $i = $n; $n = 0; } } }
$ar = array( array('东北区', '哈尔滨', 'C', 76850.4600, 76850.4600, 76850.4600), array('东北区', '哈尔滨', 'C', 602267.1390, 602267.1390, 602267.1390), array('东北区', '哈尔滨', 'C', 55356.1110, 55356.1110, 55356.1110), array('东北区', '沈阳', 'B', 51855.8950, 51855.8950, 51855.8950), array('东北区', '沈阳', 'B', 385946.7430, 385946.7430, 385946.7430), array('东北区', '沈阳', 'B', 1588513.5266, 1588513.5266, 1588513.5266),);$n = 3; //锁定前 3 列$res = array();foreach($ar as $t) { $k = join('_', array_slice($t, 0, $n)); if(! isset($res[$k])) $res[$k] = array_slice($t, 0, $n); $res[$k][] = $t[$n];}$res = array_values($res);print_r($res);
Array( [0] => Array ( [0] => 东北区 [1] => 哈尔滨 [2] => C [3] => 76850.46 [4] => 602267.139 [5] => 55356.111 ) [1] => Array ( [0] => 东北区 [1] => 沈阳 [2] => B [3] => 51855.895 [4] => 385946.743 [5] => 1588513.5266 ))の出力方法を教えてとは頼まないでください