ホームページ  >  記事  >  バックエンド開発  >  PHP の順列と組み合わせの問題

PHP の順列と組み合わせの問題

WBOY
WBOYオリジナル
2016-06-23 14:15:12779ブラウズ

有数组$arr = array('面積','収入','年齢','性別');
以上の数組里の元素、構成は次のようになります:
地域 性別 収入 年齢
地域 性別 年齢 収入
地域 収入 性別 年齢
地域 収入 年齢 性別
地域 年齢 男女収入
地域 年齢 収入 性別
男女 収入 年齢 地域
男女所得地域 年齢
男女年齢地域 収入
男女年齢所得地域
性別地域 年齢所得
男女地域 所得年齢
所得年齢 男女地域
所得年齢地域 男女
所得地域 男女年齢
所得地域 年齢男女
所得男女地域 年齢
収入男女年齢エリア
年齢収入エリア男女
年齢収入男女エリア
年齢エリア男女収入
年齢エリア収入男女
年齢男女エリア収入
年齢男女収入エリア
希望各位大神能提供好算法


回复讨论(解决方案)

$arr = array('Area','Income','Age','Gender');print_r(Arrangement($arr));//排列 Arrangementfunction Arrangement($arr = array(), $res = '') {  if(! is_array($arr) ) $arr = str_split($arr);  if(empty($arr)) $array[] = $res;  else foreach($arr AS $k => $v) {    unset($arr[$k]);    foreach( Arrangement($arr, $res . " $v") AS $t) $array[] = $t;    $arr[$k]    = $v;  }  return  $array;}
Array
(
[0] => エリア 収入 年齢 性別
[1] => エリア 収入 性別 年齢
[2] => エリア 年齢 性別収入
[3] => 地域 年齢収入 性別
[4] => 地域 性別 収入 年齢
[5] => 地域 性別 年齢 収入
[6] => 収入 年齢 性別 地域
[7] =>  収入 年齢 地域 性別
[8] =>  収入 性別 地域 年齢
[9] =>  収入 性別 年齢 エリア
[10] =>  収入地域 年齢 性別
[11] =>  収入地域 性別 年齢
[12] =>  年齢 性別 地域 収入
[13] =>  年齢 性別 収入エリア
[14] =>  年齢 地域 収入 性別
[15] =>  年齢 地域 性別 収入
[16] =>  年齢 収入 性別 エリア
[17] =>  年齢 収入 地域 性別
[18] =>  性別 地域 収入 年齢
[19] =>  性別 地域 年齢 収入
[20] =>  性別 収入 年齢 地域
[21] =>  性別 収入 地域 年齢
[22] =>  性別 年齢 地域 収入
[23] =>  性別 年齢 収入 地域
)

<?php$arr = array('Area','Income','Age','Gender');print_r(Arrangement($arr));function Arrangement($arr, $k=null) {	if($k !== null) {		unset($arr[$k]);	}	if(count($arr) == 1) {		return $arr;	}	$result = array();	foreach($arr as $k => $v) {		foreach(Arrangement($arr, $k) as $av) {			$result[] = $v . ' ' . $av;		}	}	return $result;}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。