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

WBOY
リリース: 2016-06-23 14:15:12
オリジナル
779 人が閲覧しました

有数组$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;}
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート