Php 如何计算/生成包含数组中所有可能值的字符串?

Php 如何计算/生成包含数组中所有可能值的字符串?,php,Php,这让我快发疯了,但我整个中午都在努力解决这个问题(我是GMT+2;) 我想做一个相当简单的任务(我相信,但事实证明并非如此) 假设我有一个如下所示的数组: Array ( [0] => Array ( [OptionID] => 8748 [Values] => Array ( [0] => 11614

这让我快发疯了,但我整个中午都在努力解决这个问题(我是GMT+2;)

我想做一个相当简单的任务(我相信,但事实证明并非如此)

假设我有一个如下所示的数组:

Array
(
    [0] => Array
        (
            [OptionID] => 8748
            [Values] => Array
                (
                    [0] => 11614
                    [1] => 11615
                )
        )
    [1] => Array
        (
            [OptionID] => 8749
            [Values] => Array
                (
                    [0] => 11616
                    [1] => 11617
               )
        )
)
此数组用于生成产品的所有可能选项。假设OptionID 8748表示“大小”,该数组中的值为“L”和“XL”。OptionID 8749可以是“颜色”,值为“红色”和“黑色”

我想完成一项简单的任务,以字符串形式获得该产品的四种独特组合,如:

11614+11616 11614+11617 11615+11616 11615+11617

但是,如果使用不同的产品,可能会有第三种产品选项,因此它应该能够以无限的深度在周围工作。

基本上

  $result = array_cartesian(array_pluck($a, 'Values'));
以下是帮助器函数:

function array_pluck($a, $key) {
    $r = array();
    foreach($a as $v)
        $r[] = $v[$key];
    return $r;
}

function array_cartesian($_) {
    if(count($_) == 0)
        return array(array());
    $a = array_shift($_);
    $c = array_cartesian($_);
    $r = array();
    foreach($a as $v)
        foreach($c as $p)
            $r[] = array_merge(array($v), $p);
    return $r;
}

先生,你是我今天的英雄!非常感谢+10