PHP陣列內容不重複組合排列演算法

2022-05-05 23:09:12 字數 914 閱讀 2927

最近在做ecshop的商品庫存模組,分別給一款商品的多個屬性組合設定庫存,如下圖:

一款手機有不同顏色,螢幕尺寸,系統和電量,都要設定不同的庫存,如果都要手動選擇屬性組合,則會耗費很多不必要的時間。假如開啟頁面時就已經設定好屬性排列組合那就最好不過,因此想了整天,寫了如下函式:

1/*2

author:gazeon

3date:2016-6-20

4function:getarrset

5param:$arrs 二維陣列

6getarrset(array(array(),...))

7陣列不重複排列集合8*/

9function getarrset($arrs,$_current_index=-1)

1029

else

3043

//如果當前的迴圈的陣列等於輸入陣列長度(這個陣列就是最後的陣列)

44else

if($_current_index==$_total_count)45

5354}55

}5657return

$_total_arr;58

}5960/*

************test*************

*/61

$arr=array(62

array('a','b','c'),

63array('a','b','c'),

64array('1','2','3'),

65array('i','ii','iii')

66);

6768

var_dump(getarrset($arr));

非重複組合排列(含重複數字時,生成不重複組合排列)

sample input 1 2 2 3 sample output 分析資料 這裡和不含重複資料生成全組合排列 是不同的,如果使用原 會出現重複的資料,主要原因是在遞迴的時候,會把那些重複的數字當作不同的數字利用,而平等對待,直接進行遞迴。我們要做的就是把相同的數區分出來,我們這裡可以引入乙個陣列...

生成不重複的0 1序列排列組合

在用隱列舉法解0 1型整數線性規劃時,需要生成對應於自變數個數的不重複的0 1序列的排列組合。下面是用乙個兩層迴圈實現生成0 1型整數線性規劃問題解空間的 def generatesequence n x 0 for i in range n xtran m 0while len x 2 n for...

php陣列合併怎麼不去重複

在php中,可以利用array merge recursive 函式實現不去重複的合併陣列 該函式在處理兩個或更多個陣列元素有相同的鍵名時,不會進行鍵名覆蓋,而是將多個相同鍵名的值遞迴組成乙個陣列。本教程操作環境 windows7系統 php7.1版 dell g3電腦 在php中,可以利用arra...