php 数组处理

WBOY
Freigeben: 2016-06-23 13:06:04
Original
856 Leute haben es durchsucht

$a:
array (size=16)
  0 => string '1' (length=1)
  1 => string '3' (length=1)
  2 => string '5' (length=1)
  3 => string '7' (length=1)
  4 => string '10' (length=2)
  5 => string '12' (length=2)
  6 => string '14' (length=2)
  7 => string '16' (length=2)
  8 => string '17' (length=2)
  9 => string '19' (length=2)
  10 => string '21' (length=2)
  11 => string '23' (length=2)
  12 => string '26' (length=2)
  13 => string '28' (length=2)
  14 => string '30' (length=2)
  15 => string '32' (length=2)

$b:
array (size=16)
  0 => string '2' (length=1)
  1 => string '4' (length=1)
  2 => string '6' (length=1)
  3 => string '8' (length=1)
  4 => string '9' (length=1)
  5 => string '11' (length=2)
  6 => string '13' (length=2)
  7 => string '15' (length=2)
  8 => string '18' (length=2)
  9 => string '20' (length=2)
  10 => string '22' (length=2)
  11 => string '24' (length=2)
  12 => string '25' (length=2)
  13 => string '27' (length=2)
  14 => string '29' (length=2)
  15 => string '31' (length=2)

如上数组。我要得到 [16, 1, 13,   4]     [14, 3,  15, 2]   [12,  5,  9,  8]   [10,7, 9 ,     8]
                                     [32,17,29,20]     [30,19,31,18]  [28,21,25,24]  [26,23,27,22]


回复讨论(解决方案)

看不出有什么组装规律

/*规律$a = array(1,3,5,7,  10,12,14,16,  17,19,21,23,  26,28,30,32);			 a1	           a2	                    a3	        a4$b = array(2,4,6,8,  9,11,13,15,  18,20,22,24,  25,27,29,31);			 b1           b2                   b3                   b4[16, 1,13, 4][14, 3,15, 2][12, 5, 9, 8][10, 7, 9 ,8]a2 + a1 = b2 + b1 = 17[32,17,29,20][30,19,31,18][28,21,25,24][26,23,27,22]a4 + a3 = b4 + b3 = 49*/t(17);t(49);function t($n){	$a = array(1,3,5,7,  10,12,14,16,  17,19,21,23,  26,28,30,32);	$b = array(2,4,6,8,  9,11,13,15,  18,20,22,24,  25,27,29,31);	$a = array_chunk($a,4);	$b = array_chunk($b,4);	//15+16 = 31	if($n <= 31){		$useA = array_slice($a,0,2);		$useB = array_slice($b,0,2);	}else{		$useA = array_slice($a,2,4);		$useB = array_slice($b,2,4);	}	$data = array();	arsort($useA[1]);	foreach($useA[1] as $v1){		foreach($useA[0] as $v2){			if($n==$v1+$v2){				$tmp = array();				$tmp[] = $v1;				$tmp[] = $v2;				$data['a'][] = $tmp;			}		}	}	arsort($useB[1]);	foreach($useB[1] as $v1){		foreach($useB[0] as $v2){			if($n==$v1+$v2){				$tmp = array();				$tmp[] = $v1;				$tmp[] = $v2;				$data['b'][] = $tmp;			}		}	}	foreach($data['a'] as $k=>$v){		echo join(' , ',array_merge($v,$data['b'][$k])).'<br>';	}}/*16 , 1 , 15 , 214 , 3 , 13 , 412 , 5 , 11 , 610 , 7 , 9 , 832 , 17 , 31 , 1830 , 19 , 29 , 2028 , 21 , 27 , 2226 , 23 , 25 , 24*/
Nach dem Login kopieren

是吗?
[ 12, 5, 9, 8 ]
[ 10, 7, 9, 8 ]
怎么解释?

[ 10, 7, 9, 8 ] 应该是[10,7, 11 , 6]
最后结果是两个数组的组合
a7 a0 b6 b1
a6 a1 b7 b0
a5 a2 b4 b3
a4 a3 b5 b2
a15 a8 b14 b9
a14 a9 b15 b8
a13 a10 b12 b11
a12 a11 b13 b10

[ 12, 5, 9, 8 ]
[ 10, 7, 9, 8 ]
感觉是他写错了,不然就没规律了

好吧,就算他写错了
那么
他要 [ 30, 19, 31, 18 ] 一组
你给 [ 30, 19, 29, 20 ] 一组
也是他写错了?

[ 12, 5, 9, 8 ]
[ 10, 7, 9, 8 ]
感觉是他写错了,不然就没规律了

嗯,感觉这样就不是规律了,有局限性

t(17);t(49);function t($n){	$a = array(1,3,5,7,  10,12,14,16,  17,19,21,23,  26,28,30,32);	$b = array(2,4,6,8,  9,11,13,15,  18,20,22,24,  25,27,29,31);	$a = array_chunk($a,4);	$b = array_chunk($b,4);	//15+16 = 31	if($n <= 31){		$useA = array_slice($a,0,2);		$useB = array_slice($b,0,2);	}else{		$useA = array_slice($a,2,4);		$useB = array_slice($b,2,4);	}	$data = array();	arsort($useA[1]);	foreach($useA[1] as $v1){		foreach($useA[0] as $v2){			if($n==$v1+$v2){				$tmp = array();				$tmp[] = $v1;				$tmp[] = $v2;				$data['a'][] = $tmp;			}		}	}	$tmp = array_slice($useB[1],0,2);	$useB[1] = array_merge(array_slice($useB[1],2,4),$tmp);	foreach($useB[1] as $v1){		foreach($useB[0] as $v2){			if($n==$v1+$v2){				$tmp = array();				$tmp[] = $v1;				$tmp[] = $v2;				$data['b'][] = $tmp;			}		}	}	foreach($data['a'] as $k=>$v){		echo join(' , ',array_merge($v,$data['b'][$k])).'<br>';	}}/*16 , 1 , 13 , 414 , 3 , 15 , 212 , 5 , 9 , 810 , 7 , 11 , 632 , 17 , 29 , 2030 , 19 , 31 , 1828 , 21 , 25 , 2426 , 23 , 27 , 22*/
Nach dem Login kopieren

我想应该这样做

$a = array(   1,  3,  5,  7,  10, 12, 14, 16,  17, 19, 21, 23,  26, 28, 30, 32);$b = array(   2,  4,  6,  8,   9, 11, 13, 15,  18, 20, 22, 24,  25, 27, 29, 31);function foo($a) {  $r = array();  foreach(array_chunk($a, 8) as $v) {    $t = array_chunk($v, 4);    $t = array_map(null, array_reverse($t[1]), $t[0]);    $r = array_merge($r, $t);  }  return $r;}$r = foo($a);foreach(foo($b) as $k=>$v) {  $k += $k % 2 ? -1 : 1;  $r[$k] = array_merge($r[$k], $v);}print_r($r);
Nach dem Login kopieren
Array(    [0] => Array        (            [0] => 16            [1] => 1            [2] => 13            [3] => 4        )    [1] => Array        (            [0] => 14            [1] => 3            [2] => 15            [3] => 2        )    [2] => Array        (            [0] => 12            [1] => 5            [2] => 9            [3] => 8        )    [3] => Array        (            [0] => 10            [1] => 7            [2] => 11            [3] => 6        )    [4] => Array        (            [0] => 32            [1] => 17            [2] => 29            [3] => 20        )    [5] => Array        (            [0] => 30            [1] => 19            [2] => 31            [3] => 18        )    [6] => Array        (            [0] => 28            [1] => 21            [2] => 25            [3] => 24        )    [7] => Array        (            [0] => 26            [1] => 23            [2] => 27            [3] => 22        ))
Nach dem Login kopieren
只是调动位置

确实是调换位置,这个有规律些

[12,  5,  9,  8]   [10,7, 9 ,     8] 是我写错,不好意思。宗各位所述已经解决谢谢你们。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage