gpt4 book ai didi

php - 生成数组之间元素的所有组合

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:07:19 24 4
gpt4 key购买 nike

我有多个包含多个元素的数组,例如:

$array1 = (1,2)
$array2 = (3,4)

我需要为数组元素生成所有可能的组合。对于给定的示例,输出应为:

1_3, 1_4, 2_3, 2_4

但是,问题在于每个数组中的数组数量和元素数量可能不同。所以我们也可以这样:

$array1 = (1,2,3,4) 
$array2 = (5,6,7)
$array3 = (8,9,10,11,12)

输出应该是这样的:

1_5_8, 1_5_9, 1_5_10 etc. until 4_7_12.

我如何实现类似的东西?我知道我应该使用 foreach 循环,但如果每次执行算法时“foreaches”的数量都不同,我不知道该怎么办。

非常感谢任何帮助:)

最佳答案

<?php 


$array1 = [1,2,3,4];
$array2 = [5,6,7];
$array3 = [8,9,10,11,12];

$collection = [$array1,$array2,$array3];

$result = $collection[0];
array_shift($collection);
foreach($collection as $each_array){
$temp = [];
foreach($result as $each_sub_result){
foreach($each_array as $each_item){
$temp[] = $each_sub_result."_".$each_item;
}
}
$result = $temp;
}

print_r($result);

算法:

  • 我们将所有数组收集到我们的 $collection 变量中。
  • 现在,我们遍历 $collection 变量的所有元素,其中每个单独的项目都是一个数组。
  • 我做了一个 array_shift()因为我们将 $collection 的第一个元素分配给 $result(所以我们不想再次迭代它们)。
  • 我们维护$temp 来存储临时结果。请注意,我们还使用 $result 来存储临时结果,以便我们可以对其进行迭代并获得新的临时结果。 临时,我的意思是构建最终数组。例如:它以 1 开头,然后是 1_5,最后是 1_5_8
  • 循环完成后,我们将在$result中得到最终答案。

关于php - 生成数组之间元素的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55184154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com