本文目錄一覽:
- 1、PHP 多個數組的排列組合
- 2、求PHP 數組的任意組合的演算法函數
- 3、php 如何計算數組中數字的組合?
- 4、php 多組數字如何計算所有的組合形式。如:
- 5、PHP中如何列出一個數組的所有規定組合?
PHP 多個數組的排列組合
$a = array(1,2,3,4,5,6,7);
$b = array(1,2,3);
$c = array(1,2,3,4,5,6,7,8,9,10);
$d = array($a,$b,$c);
//計算每一個數組的長度
$len = 1;
$arrLen = count($d); //需要排列數組有多少個
$recIndex = null; //記錄當前該取的位置
//foreach 計數
$count_3 = 0;
foreach ($d as $key = $value) {
$lenRec[$count_3] = count($value);
$len = $lenRec[$count_3]*$len;
$recIndex[] = 0;//第一次全部取第0個
$count_3++;
}
//算出% 的值
$count = 1;
foreach ($lenRec as $key = $value) {
$moduloVal = 1;
if($arrLen == $count){
$modulo[] = count($d[$arrLen-1]); //等於最後一個的長度
}else{
$count_1 = 1;
foreach ($lenRec as $index = $item) {
$count_1 $count $moduloVal = $moduloVal*$item;
$count_1 ++;
}
$modulo[] = $moduloVal;
}
$count ++;//為了防止$d key是有值的 不是自然序列 需要計數
}
$i = 1;
while ( $i = $len) {
$html = ”;
$count_2 = 0;// 取模
$temp = ”;
foreach ($d as $value) {
$html .= $value[$recIndex[$count_2]%$lenRec[$count_2]].”,”;
$count_2 ++;
}
echo $html.”br”;
foreach ($modulo as $key = $value) {
if($i%$value == 0 $key $arrLen – 1 ){
$recIndex[$key] = $recIndex[$key] +1;
}
if($key == $arrLen – 1){
if($i%$value == 0){
$recIndex[$key] = 0;
}else{
$recIndex[$key] = $recIndex[$key] +1;
}
}
}
$i ++;
//改變獲取的位置
}
求PHP 數組的任意組合的演算法函數
function getRank($arr, $len=0, $str=””) {
global $arr_getrank;
$arr_len = count($arr);
if($len == 0){
$arr_getrank[] = $str;
}else{
for($i=0; $i$arr_len; $i++){
$tmp = array_shift($arr);
if (empty($str))
{
getRank($arr, $len-1, $tmp);
}
else
{
getRank($arr, $len-1, $str.”,”.$tmp);
}
// array_push($arr, $tmp);
}
}
}
測試:
$words = array(‘a1′,’b2′,’c3′,’d4′,’e5’);
$arr_getrank = array();
getRank($words, 3);
print_r($arr_getrank);
輸出:
Array
(
[0] = a1,b2,c3
[1] = a1,b2,d4
[2] = a1,b2,e5
[3] = a1,c3,d4
[4] = a1,c3,e5
[5] = a1,d4,e5
[6] = b2,c3,d4
[7] = b2,c3,e5
[8] = b2,d4,e5
[9] = c3,d4,e5
)
php 如何計算數組中數字的組合?
$arr = array(1,2,2,3,3,3,4,5,3,2,3,3);$num = count(array_count_values($arr));// 或者$num = count(array_unique($arr));
php 多組數字如何計算所有的組合形式。如:
$A = [‘紅色’,’黃色’];
$B = [‘M’,’L’,’XL’];
$C = [‘輕’,’重’];
// 先將各屬性值處理成一個整體
$list[‘A’] = $A;
$list[‘B’] = $B;
$list[‘C’] = $C;
$res = array();
foreach ($list as $k = $v) {
$res = getCombinationToString($v);
}
/**
* 獲取組合的結果
* [@author]() 18y
*/
function getCombinationToString($val){
// 保存上一個的值
static $res = array();
if(empty($res))
{
$res = $val;
}else{
// 臨時數組保存結合的結果
$list = array();
foreach ($res as $k = $v) {
foreach ($val as $key = $value) {
$list[$k.’_’.$key] = $v.’_’.$value;
}
}
$res = $list;
}
return $res;
}
詳情看全文吧,這裡寫有點亂 php 多組數組算所有的組合形式
PHP中如何列出一個數組的所有規定組合?
嵌套循環,代碼如下:
$arr = array(‘0’=array(8,9),’1’=array(5),’2’=array(1,2));
$arr2 = array();
foreach ($arr[0] as $v1) {
foreach($arr[1] as $v2){
foreach($arr[2] as $v3){
$arr2[] = $v1.$v2.$v3;
}
}
}
print_r($arr2);
原創文章,作者:ZX7G8,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128467.html