如何在 PHP 中计算多个数组的笛卡尔积?

Barbara Streisand
发布: 2024-11-14 12:15:02
原创
876 人浏览过

How to Calculate the Cartesian Product of Multiple Arrays in PHP?

多个数组的笛卡尔积:综合解决方案

处理多个数组时,可能需要生成一个表,其中包含这些数组中所有可能的元素组合数组,同时避免重复。这种数学运算称为笛卡尔积。

要在 PHP 中解决这一挑战,请考虑使用以下函数:

function array_cartesian() {
    $_ = func_get_args();
    if(count($_) == 0)
        return array(array());
    $a = array_shift($_);
    $c = call_user_func_array(__FUNCTION__, $_);
    $r = array();
    foreach($a as $v)
        foreach($c as $p)
            $r[] = array_merge(array($v), $p);
    return $r;
}

$cross = array_cartesian(
    array('apples', 'pears',  'oranges'),
    array('steve', 'bob')
);

print_r($cross);
登录后复制

此函数采用可变长度参数,每个参数代表一个数组。它通过从第一个数组中选择一个元素并将其与其余数组的所有可能的笛卡尔积组合来递归计算笛卡尔积。

结果是一个嵌套数组,其中包含输入数组中元素的每个唯一组合。在给定的示例中,两个数组的笛卡尔积将产生:

Array 0            Array 1
apples             steve
apples             bob
pears              steve
pears              bob
登录后复制

此解决方案不仅对二维数组有效,而且还可以扩展以处理任意数量的数组。它提供了一种简洁而优雅的方法来解决 PHP 中的笛卡尔积问题。

以上是如何在 PHP 中计算多个数组的笛卡尔积?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板