首页 > 解决方案 > 在PHP中将两个不同长度的数组相乘?

问题描述

我有一个动态数组:

$variants = [
    'color' => ['Blue', 'Red', 'Pink'],
    'size' => ['X', 'S'],
    ... (maybe more elements like above or not)
];

我期望这个:

$result = [
    0 => ['color' => 'Blue', 'size' => 'X'],
    1 => ['color' => 'Blue', 'size' => 'S'],
    2 => ['color' => 'Red', 'size' => 'X'],
    3 => ['color' => 'Red', 'size' => 'S'],
    4 => ['color' => 'Pink', 'size' => 'X'],
    5 => ['color' => 'Pink', 'size' => 'S']
];

结果是所有数组长度的乘积。我已经搜索但尚未找到解决方案。希望任何人都可以提供帮助。非常感谢!

标签: phparraysmultiplication

解决方案


一个让你想要的功能

function get_combinations($arrays) {
    $result = array(array());
    foreach ($arrays as $property => $property_values) {
        $tmp = array();
        foreach ($result as $result_item) {
            foreach ($property_values as $property_value) {
                $tmp[] = array_merge($result_item, array($property => $property_value));
            }
        }
        $result = $tmp;
    }
    return $result;
}

$variants = [
    'color' => ['Blue', 'Red', 'Pink'],
    'size' => ['X', 'S']
];

$result = get_combinations($variants);

结果会如你所愿。


推荐阅读