欢迎您光临本站
首页 > PHP > 正文
faddei头像
faddei

2021-07-10

评论者
PHP
0 1

二维数组里面各个元素组合成新的数组,这里我们就需要用到笛卡尔积功能


数组格式

$arr = [ ['黑色'=>12,'白色'=>13], ['1.2KG'=>15,'2.0KG'=>16] ]


二维数组求笛卡尔积

function CartesianProduct($arr,$type='/') {
    $arr1 = [];
    $result = array_shift($arr);
    while ($arr2 = array_shift($arr)) {
        $arr1 = $result;
        $result = [];
        foreach ($arr1 as $k1=>$v1) {
            foreach ($arr2 as $k2=>$v2) {
                $result[$k1.'#'.$k2] = $v1.$type.$v2;
            }
        }
    }
    return $result;
}


得到的结果格式如下:

$result = [
    '黑色#1.2KG' => '12/15',
    '黑色#2.0KG' => '12/16',
    '白色#2.0KG' => '13/15',
    '白色#2.0KG' => '13/16',
];


注:二维数组包含2个以上元素均可使用此方法求得笛卡尔积

版权声明:本站所提供的文章、图片等内容均为用户发布或互联网整理而来,仅供学习参考,如有侵犯您的版权,请联系我们客服人员删除。

288

精彩推荐

暂无评论

文明用语