ホームページ > バックエンド開発 > PHPチュートリアル > 2次元配列の要素を結合するアルゴリズムを教えてください

2次元配列の要素を結合するアルゴリズムを教えてください

WBOY
リリース: 2016-06-23 13:26:01
オリジナル
1110 人が閲覧しました

すごい
関数を使用することはできますか?

$arr = array(    array('a','b','c'),    array('c','f'),    array('g','z'),    array('x','y'));//$arr子集元素长度可能会多一些//将$arr的子集元素与$arr其他子集元素两两组合或者三三四四组合//子集array('a','b','c')中的元素不需要组合//两两组合$newarr = array(  array('a','c'),  array('a','f'),  array('b','c'),  array('b','f'),  array('c','c'),  array('c','f'),  ……)//三三组合$newarr = array(  array('a','c','g'),  array('a','f','g'),  array('b','c','g'),  array('b','f','g'),  array('c','c','g'),  array('c','f','g'),  ……)//四四组合$newarr = array(  array('a','c','g','x'),  array('a','f','g','x'),  array('b','c','g','x'),  array('b','f','g','x'),  array('c','c','g','x'),  array('c','f','g','x'),  ……)
ログイン後にコピー


ディスカッション (解決策) に返信

Combination (n と m の組み合わせ) と Descartes (デカルト積) 関数を組み合わせるだけです
実際、そうする必要はありませんたった 1 つの関数として記述され、1 つの関数として記述されると、その普遍性が失われます

私も最初は、最初に同じ長さの配列を取得し、次にデカルト積を求めるべきだと考えました
最初に再帰を使用し、次に積を求め、最後に配列をマージしますか?

この場合、

//$arr:原始数组,$cNum:组合长度function getCombination($arr,$cNum){  ……}
ログイン後にコピー
が機能します

2 つの関数の可能な記述方法は
function getCombination($arr, $cNum) {   $res = array();   foreach( Combination($arr, $cNum) as $item) {      $res = array_merge($res, Descartes($item));   }   return $res;}
ログイン後にコピー
です

一般的に使用されるアルゴリズムは、コード ベースを形成する関数として記述される必要があります。必要に応じて呼び出してください。毎回記述する必要はありません

一般的に使用されるアルゴリズムは、コードベースを形成する関数として記述される必要があります。必要なときに呼び出してください。毎回書く必要はありません

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