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)
上一篇 2022年7月27日 下午3:36
下一篇 2022年7月27日 下午3:46


相关推荐

  • 阿里云产品介绍

    阿里云产品介绍文章目录一、阿里云四大件1、云服务器ECS2、云数据库RDS3、负载均衡SLB4、对象存储OSS5、其他的云计算产品1)内容分发网络CDN:2)专有网络VPC:2)弹性伸缩:二、阿里云安全系列产品1、DDoS高防IP2、安骑士3、证书服务4、态势感知5、堡垒机三、阿里云网络中间件相关消息队列MQ四、阿里云万网产品1、域名2、虚拟主机3、企业邮箱4、云解析DNS公有云和私有云概念bai概念imghttps://www.aliyun.com/product/rds/mysql?spm=a2cls.b9237

    2022年6月2日
    52
  • Java位运算的基础及使用(意义)

    Java位运算的基础及使用(意义)这几天在看 HashMap 的源码 但里面的位运算太多 看得有点晕 故 先整理位运算相关知识 在了解位运算的计算后 又在思考 使用位运算的意义是什么 毕竟平时开发基本没用过位运算 经大量的资料查找 整理了两个自己感觉比较好的位运算利用例子 特在此记录 分享 另外 毕竟位运算的代码可读性差 请大家谨慎使用 一 位运算基础 1 位运算是针对整数的二进制进行的位移操作 2 整数 32 位 正数符号为

    2026年3月17日
    2
  • switch case语句用法详解

    switch case语句用法详解switch 开关 的意思 是一种 选择 语句 它用法非常简单 switch 是多分支选择语句 说得通俗点 多分支就是多个 if 语句的组合 从功能上说 switch 语句和 if 语句完全可以相互取代 但从编程的角度 它们又各有各的特点 所以至今为止也不能说谁可以完全取代谁 当嵌套的 if 比较少时 三个以内 用 if 编写程序会比较简洁 但是当选择的分支比较多时 嵌套的 if 语句层数就

    2026年3月16日
    2
  • pycharm安装opencv库及遇到的问题

    pycharm安装opencv库及遇到的问题软件安装方面纯小白 遇到很多问题 查了很多资料 弄了一天才装好注意事项 1 首先要注意的地方装 opencv 首先需要装 numpy 库和 matplotlib 库 2 除了装 opencv python 外 还需要装 opencv contrib python 而且一定是同一版本才行 3 pycharm 有自己下载这些库的功能 遇到问题以后才需要按照网上说的去下载 whl 文件 能用 pycharm 解决的就不要去下载了 4 要注意 python3 7 配不上最新的 opencv 必须找旧版 及时新版写得 CP37 也不行 安装步骤

    2026年3月18日
    2
  • 编程中变量命名方法:驼峰命名法?

    编程中变量命名方法:驼峰命名法?nbsp nbsp nbsp nbsp 前几日在浏览关于 python 的博客时 无意中看到了驼峰命名法 百度后顿时恍然大悟 了结了自己的一桩心病 以前一直有疑问别人为什么这么命名 他们的理论依据是什么 nbsp nbsp nbsp nbsp 骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起 而构成的唯一识别字时 第一个单词以小写字母开始 第二个单词的首字母大写或每一个单词的首字母都采用大写字母 例如 myFirstName myLas

    2026年1月22日
    2
  • Centos 安装图形界面与远程使用「建议收藏」

    Centos 安装图形界面与远程使用「建议收藏」Centos安装图形界面与远程登录使用(1)图形界面安装在联网的情况下使用yum命令安装即可需要安装xwindow服务与desktop桌面,不分先后,命令如下:yumgroupinstall”Desktop”yumgroupinstall”XWindowSystem”最后启动输入命令startXvnc

    2022年5月29日
    88

发表回复

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

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