用PHP组合数组,生成笛卡尔积的几个例子

1 下面的代码来生成笛卡尔积:

php 复制代码
function cartesianProduct($arrays) {
    $result = [[]];
    foreach ($arrays as $property => $property_values) {
        $tmp = [];
        foreach ($result as $result_item) {
            foreach ($property_values as $property_value) {
                $tmp[] = array_merge($result_item, [$property => $property_value]);
            }
        }
        $result = $tmp;
    }
    return $result;
}

$colors = ["红色", "白色", "黄色", "蓝色"];
$sizes = ["128G", "256G", "512G"];
$versions = ["国行", "港版", "美版", "韩版"];

// 生成笛卡尔积
$combinations = cartesianProduct([
    '颜色' => $colors,
    '尺寸' => $sizes,
    '版本' => $versions
]);

// 输出笛卡尔积结果
foreach ($combinations as $combination) {
    echo implode(', ', $combination) . "\n";
}

这段代码会生成由输入数组的笛卡尔积组成的数组。你可以根据需要修改输入数组,并按照相同的格式来调用cartesianProduct函数。

2 下面是使用嵌套循环生成笛卡尔积的PHP代码示例:

php 复制代码
// 定义多个数组
$colors = ['红色', '白色', '黄色', '蓝色'];
$capacities = ['128G', '256G', '512G'];
$versions = ['国行', '港版', '美版', '韩版'];

// 初始化笛卡尔积数组
$cartesianProduct = [];

// 使用嵌套循环生成笛卡尔积
foreach ($colors as $color) {
    foreach ($capacities as $capacity) {
        foreach ($versions as $version) {
            $cartesianProduct[] = [$color, $capacity, $version];
        }
    }
}

// 打印笛卡尔积
foreach ($cartesianProduct as $combination) {
    echo implode(', ', $combination) . "\n";
}

这将生成颜色、容量和版本的所有可能组合。你可以根据需要修改数组的值和数量来生成不同的笛卡尔积。此外,你还可以使用递归来处理不定数量的数组生成笛卡尔积。

3以下是一个示例,生成给定数组的笛卡尔积:

php 复制代码
function cartesianProduct($arrays) {
    $result = array();
    $max = count($arrays) - 1;
    $result = array();
    function helper($arr, $i) {
        global $result, $max;
        if ($i == $max) {
            foreach ($arr[$i] as $value) {
                $result[] = $value;
            }
        } else {
            foreach ($arr[$i] as $value) {
                helper($arr, $i + 1);
                foreach ($result as &$product) {
                    $product = "$product, $value";
                }
            }
        }
    }
    helper($arrays, 0);
    return $result;
}

// 示例用法
$colors = ["红色", "白色", "黄色", "蓝色"];
$storage = ["128G", "256G", "512G"];
$versions = ["国行", "港版", "美版", "韩版"];

$arrays = [$colors, $storage, $versions];
$cartesianProduct = cartesianProduct($arrays);

foreach ($cartesianProduct as $combination) {
    echo "组合: $combination\n";
}

这个示例将生成给定数组的笛卡尔积,以获取所有可能的组合。你可以根据你的需求替换 $colors$storage$versions 数组来生成不同的组合。

4 使用嵌套的循环来生成这些数组的笛卡尔积。以下是一些示例代码:

php 复制代码
// 示例1:生成颜色和尺寸的笛卡尔积
$colors = ["红色", "白色", "黄色", "蓝色"];
$sizes = ["128G", "256G", "512G"];

$combinations = [];
foreach ($colors as $color) {
    foreach ($sizes as $size) {
        $combinations[] = [$color, $size];
    }
}

print_r($combinations);

// 示例2:生成颜色、尺寸和版本的笛卡尔积
$colors = ["红色", "白色", "黄色", "蓝色"];
$sizes = ["128G", "256G", "512G"];
$versions = ["国行", "港版", "美版", "韩版"];

$combinations = [];
foreach ($colors as $color) {
    foreach ($sizes as $size) {
        foreach ($versions as $version) {
            $combinations[] = [$color, $size, $version];
        }
    }
}

print_r($combinations);

这些示例会生成颜色、尺寸和版本的笛卡尔积,你可以根据需要自定义数组和维度来生成不同组合。

相关推荐
残月只会敲键盘1 小时前
php代码审计--常见函数整理
开发语言·php
ac-er88882 小时前
MySQL如何实现PHP输入安全
mysql·安全·php
YUJIANYUE5 小时前
PHP将指定文件夹下多csv文件[即多表]导入到sqlite单文件
jvm·sqlite·php
龙哥·三年风水14 小时前
群控系统服务端开发模式-应用开发-个人资料
分布式·php·群控系统
Dingww101118 小时前
梧桐数据库中的网络地址类型使用介绍分享
数据库·oracle·php
Genius Kim1 天前
SpringCloud Sentinel 服务治理详解
spring cloud·sentinel·php
原机小子1 天前
城镇保障性住房管理:SpringBoot系统解决方案
数据库·spring boot·php
kali-Myon1 天前
NewStarCTF2024-Week5-Web&Misc-WP
前端·python·学习·mysql·web安全·php·web
DK七七1 天前
当今陪玩系统小程序趋势,陪玩系统源码搭建后的适用于哪些平台
小程序·php·uniapp
tekin1 天前
vscode php Launch built-in server and debug, PHP内置服务xdebug调试,自定义启动参数配置使用示例
ide·vscode·php·launch.json·runtimeargs·php内置服务自定义参数