php組合數組,Php數組合併

本文目錄一覽:

高分求解PHP數組組合問題,給個思路就行。

下面是我寫的用遞歸實現組合的小程序:

?php

function com($line, $x){

if (count($x)==1) echo “$line $x[0]\n”;

else {

$y=array_pop($x);

com($line.’ ‘.$y, $x);

com($line, $x);

com($line, array($y));

}

}

$a = array(‘A’,’B’,’C’,’D’);

com(”, $a);

?

由於程序是用\n換行,請在命令行下執行,我執行的結果如下:

E:\ygbphp a.php

D C B A

D C A

D C B

D B A

D A

D B

D C

C B A

C A

C B

B A

A

B

C

D

你如果要做新的數組,把裡面的echo語句處理一下即可,注意新數組可以使用全局變數。

php怎麼將兩個數組合成一個數組?

PHP 中的 array_merge()、array_merge_recursive()函數可以實現

array_merge() 函數把兩個或多個數組合併為一個數組。

如果鍵名有重複,該鍵的鍵值為最後一個鍵名對應的值(後面的覆蓋前面的)。如果數組是數字索引的,則鍵名會以連續方式重新索引。

注意:如果僅僅向 array_merge() 函數輸入了一個數組,且鍵名是整數,則該函數將返回帶有整數鍵名的新數組,其鍵名以 0 開始進行重新索引。

array_merge(array1,array2,array3…)

參數說明

array1 必需。輸入的第一個數組。

array2 必需。輸入的第二個數組。

array3 可選。可指定的多個輸入數組。

例如:

?php

$a1=array(“a”=”Horse”,”b”=”Dog”);

$a2=array(“c”=”Cow”,”b”=”Cat”);

print_r(array_merge($a1,$a2));

?

輸出:

Array ( [a] = Horse [b] = Cat [c] = Cow )

僅使用一個數組參數:

?php

$a=array(3=”Horse”,4=”Dog”);

print_r(array_merge($a));

?

輸出:

Array ( [0] = Horse [1] = Dog )

array_merge_recursive() 函數與array_merge()函數不同的是,當有重複的鍵名時,值不會被覆蓋,而是將多個相同鍵名的值遞歸組成一個數組。

例如:

?php

$a1=array(“a”=”Horse”,”b”=”Dog”);

$a2=array(“c”=”Cow”,”b”=”Cat”);

print_r(array_merge_recursive($a1,$a2));

?

輸出:

Array (

[a] = Horse

[b] = Array ( [0] = Dog [1] = Cat )

[c] = Cow

)

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 multimerge(){

    $arrs = func_get_args();

    $merged = array();

    while($arrs){

        $array = array_shift($arrs);

        if(!$array){

            continue;

        }

        foreach ($array as $key = $value){

            if (is_string($key)){

                if (is_array($value)  array_key_exists($key, $merged)  is_array($merged[$key])){

                     $merged[$key] = call_user_func(__FUNCTION__, $merged[$key], $value);

                }else{

                     $merged[$key] = $value;

                }

            }else{

                    $merged[] = $value;

            }

        }

    }

    return $merged;

}

$a1 = array(‘user’ = array(‘name’ = ‘tony’, ‘score’ = 23));

$a2 = array(‘user’ = array(‘name’ = ‘tony’, ‘score’ = 255), ‘name’ =’tom’);

$a3 = array(‘user’ = array(‘name’ = ‘tony’, ‘score’ = 288, ‘test’ = ‘abc’), ‘name’ =’jack’);

$result= multimerge($a1, $a2, $a3);

var_dump($result);

php裡面如何合併數組?

簡單的方法是使用函數array_merge(),比如array_merge($arr_one,$arr_two );

或者forech方法

forech($arr_one as $v){

$arr_two[]=$v;

}

執行後數組one的元素全部添加到數組two中了

php實現全組合演算法

?php

/**

* 在數組$a中任意m個元素組合

*

* @param array $a 候選的集合

* @param int $n 候選的集合大小

* @param int $m 組合元素大小

* @param array $b 儲存當前組合中的元素,這裡儲存的是元素鍵值

* @param int $M 相當一個常量,一直保持不變

* @return */

function combine($a,$n,$m,$b,$M){

for($i=$n;$i=$m;$i–){

$b[$m-1]=$i-1;

if($m 1){

$combine[]=combine($a,$i-1,$m-1,$b,$M);

}else{

$onecombine=”;

for($j=$M-1;$j=0;$j–){

$onecombine.=$a[$b[$j]];

}

$combine[]=$onecombine;

$onecombine=”;

}

}

return $combine;

}

/**

* 遞歸輸出數組

*

* @param array $arr 待輸出的數組

* @return int 返回數組元素個數*/

function recursionarray($arr){

$i=0;

foreach($arr as $value){

if(is_array($value)){

$i+=recursionarray($value);

}else{

echo $value.”br/”;

$i++;

}

}

return $i;

}

$a=array(‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’);

$b=array();

$combine=combine($a,10,5,$b,5);

$count=recursionarray($combine);

echo “總共有”.$count.”組合”;

?

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/258397.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:49
下一篇 2024-12-15 12:49

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python去掉數組的中括弧

    在Python中,被中括弧包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括弧。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字元串進行格式化處理。 names = [‘A…

    編程 2025-04-29
  • Java創建一個有10萬個元素的數組

    本文將從以下方面對Java創建一個有10萬個元素的數組進行詳細闡述: 一、基本介紹 Java是一種面向對象的編程語言,其強大的數組功能可以支持創建大規模的多維數組以及各種複雜的數據…

    編程 2025-04-28
  • Python數組隨機分組用法介紹

    Python數組隨機分組是一個在數據分析與處理中常用的技術,它可以將一個大的數據集分成若干組,以便於進行處理和分析。本文將從多個方面對Python數組隨機分組進行詳細的闡述,包括使…

    編程 2025-04-28
  • Python數組索引位置用法介紹

    Python是一門多用途的編程語言,它有著非常強大的數據處理能力。數組是其中一個非常重要的數據類型之一。Python支持多種方式來操作數組的索引位置,我們可以從以下幾個方面對Pyt…

    編程 2025-04-28

發表回復

登錄後才能評論