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/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

发表回复

登录后才能评论