php实现笛卡尔积

php实现笛卡尔积问题:有那么一个数组$arr=array(array(1,2,3),array(‘中’,’国’,’人’),array(‘a’,’b’,’c’));要求使用PHP语言实现计算该数组的笛卡尔积。实现过程如下所示:<?php$arr=array(array(1,2,3),array(‘…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

问题:有那么一个数组

$arr = array(
    array(1, 2, 3),
    array('中','国','人'),
    array('a','b','c')
);

要求使用PHP语言实现计算该数组的笛卡尔积。

实现过程如下所示:

<?php
    $arr = array(
        array(1, 2, 3),
        array('中','国','人'),
        array('a','b','c')
    );
    function diker($arr) {
        $result = array_shift($arr);
        while($curArr = array_shift($arr)) {
            $lastArr = $result;
            $result = array();
            foreach($lastArr as $lastVal) {
                if(!is_array($lastVal)) {
                    $lastVal = array($lastVal);
                }
                foreach($curArr as $curVal) {
                    if(!is_array($curVal)) {
                        $curVal = array($curVal);
                    }
                    $result[] = array_merge_recursive($lastVal, $curVal);
                }
            }
        }
        return $result;
    }
    $dkRes = diker($arr);
    if (is_array($dkRes)) {
        foreach ($dkRes as $val) {
            print_r($val);
            echo "<br/>";
        }
    } else {
        var_dump($dkRes);
    }

运行结果如下所示:

Array ( [0] => 1 [1] => 中 [2] => a )
Array ( [0] => 1 [1] => 中 [2] => b )
Array ( [0] => 1 [1] => 中 [2] => c )
Array ( [0] => 1 [1] => 国 [2] => a )
Array ( [0] => 1 [1] => 国 [2] => b )
Array ( [0] => 1 [1] => 国 [2] => c )
Array ( [0] => 1 [1] => 人 [2] => a )
Array ( [0] => 1 [1] => 人 [2] => b )
Array ( [0] => 1 [1] => 人 [2] => c )
Array ( [0] => 2 [1] => 中 [2] => a )
Array ( [0] => 2 [1] => 中 [2] => b )
Array ( [0] => 2 [1] => 中 [2] => c )
Array ( [0] => 2 [1] => 国 [2] => a )
Array ( [0] => 2 [1] => 国 [2] => b )
Array ( [0] => 2 [1] => 国 [2] => c )
Array ( [0] => 2 [1] => 人 [2] => a )
Array ( [0] => 2 [1] => 人 [2] => b )
Array ( [0] => 2 [1] => 人 [2] => c )
Array ( [0] => 3 [1] => 中 [2] => a )
Array ( [0] => 3 [1] => 中 [2] => b )
Array ( [0] => 3 [1] => 中 [2] => c )
Array ( [0] => 3 [1] => 国 [2] => a )
Array ( [0] => 3 [1] => 国 [2] => b )
Array ( [0] => 3 [1] => 国 [2] => c )
Array ( [0] => 3 [1] => 人 [2] => a )
Array ( [0] => 3 [1] => 人 [2] => b )
Array ( [0] => 3 [1] => 人 [2] => c )

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157653.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vuex-Actions的用法

    vuex-Actions的用法

    2022年4月3日
    65
  • 分布式爬虫部署[通俗易懂]

    分布式爬虫部署[通俗易懂]【服务器端】1.下载redis,RedisDesktopManagerredis。2.修改配置文件(找到redis下的redis.windows.conf双击打开,找到bind并修改为0.0.0.0,然后protected-mode“no”3.打开cmd命令行进入redis的安装目录,输入redis-server.exeredis.windows.conf回车,保持程序一直开着。如果不是这个界面,证明redis服务已经开启了,需要redis-clishutdow

    2025年7月17日
    5
  • flutter开发app_flutter项目

    flutter开发app_flutter项目前段时间Flutter很火,所以在闲暇之余做了一个助学通的Flutter移动端应用,现在开源出来,希望对想要学习Flutter的朋友有所帮助。我大致做个项目介绍:学生签到系统:分java服务端提供

    2022年8月5日
    7
  • pycharm激活成功教程教程

    pycharm激活成功教程教程转载查询 https blog csdn net u014044812 article details 86679150 转载于 https www cnblogs com SakuraYuanYu p 10542237 html

    2025年8月1日
    12
  • maven中jar和war的区别

    maven中jar和war的区别jar文件包括java普通类、资源文件和普通文件,在maven中即是打包src/main/java和src/main/resources资源文件夹下的所有文件。在打包的时候会自动生成MATA-INF文件夹,用于存储maven的pom信息和MANIFEST.MF文件。例如:war文件包含全部的web应用程序,即所有的java类,配置信息和jsp、js等静态资源。但是需要注意war

    2022年5月23日
    81
  • excel旭日图_旭日图怎么画

    excel旭日图_旭日图怎么画旭日图(Sunburst)由多层的环形图组成,在数据结构上,内圈是外圈的父节点。因此,它既能像饼图一样表现局部和整体的占比,又能像矩形树图一样表现层级关系。引入相关文件旭日图是ApacheEChartsTM4.0新增的图表类型,从CDN引入完整版的echarts.min.js最简单的旭日图创建旭日图需要在series配置项中声明类型为‘sunburst’的系列,并且以树形结构声明其data:varoption={series:{type

    2022年9月25日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号