gpt4 book ai didi

php - 获取三个数组的所有可能组合,不重复

转载 作者:行者123 更新时间:2023-12-01 21:48:15 25 4
gpt4 key购买 nike

我有三个动态填充的数组。可能只有一两个数组有数据。

$array1 = array(
[0] => 100GB
[1] => 500GB
)

$array2 = array(
[0] => black
[1] => yellow
[2] => green
)

$array1 = array(
[0] => 2.5"
)

不,我需要将它们组合成一个包含所有可能变化的新数组

$variations = array(
[0] => 100GB - black - 2.5"
[1] => 100GB - yellow - 2.5"
[2] => 100GB - green - 2.5"
[3] => 500GB - black - 2.5"
[4] => 500GB - yellow - 2.5"
[5] => 500GB - green - 2.5"
)

到目前为止我还没有找到一种方法来做到这一点。有人可以帮我吗?

提前谢谢

最佳答案

您可以使用 foreach 循环轻松实现此目的:

$array1 = array('100GB', '500GB');
$array2 = array('black', 'yellow', 'green');
$array3 = array('2.5');

$combinations = array();
foreach ($array1 as $i) {
foreach ($array2 as $j) {
foreach ($array3 as $k) {
$combinations[] = $i.' - '.$j.' - '.$k;
}
}
}

echo implode("\n", $combinations);

编辑:要处理空数组,您可以使用此函数:

function combinations($arrays, $i = 0) {
if (!isset($arrays[$i])) {
return array();
}
if ($i == count($arrays) - 1) {
return $arrays[$i];
}

// get combinations from subsequent arrays
$tmp = combinations($arrays, $i + 1);

$result = array();

// concat each array from tmp with each element from $arrays[$i]
foreach ($arrays[$i] as $v) {
foreach ($tmp as $t) {
$result[] = is_array($t) ?
array_merge(array($v), $t) :
array($v, $t);
}
}

return $result;
}

该函数取自this答案,所以功劳归于作者。然后,您可以这样调用此组合函数:

$array1 = array('100GB', '500GB');
$array2 = array();
$array3 = array('2.5');

$arrays = array_values(array_filter(array($array1, $array2, $array3)));
$combinations = combinations($arrays);

foreach ($combinations as &$combination) {
$combination = implode(' - ', $combination);
}

echo implode("\n", $combinations);

输出:

100GB - 2.5
500GB - 2.5

关于php - 获取三个数组的所有可能组合,不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24478879/

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