Php 找到从另一个复杂数组创建数组列表的方法

Php 找到从另一个复杂数组创建数组列表的方法,php,algorithm,Php,Algorithm,我正面临着一项让我头疼的复杂任务。假设我有这样的选项数组: $options = {'Color' => {'Red, Green, Blue'}, 'Size' => {'S','M','L'}, 'Material' => {'Wool','Cotton'} } 此外,我还有一组映射: {'Red', 'S', 'Cotton'} {'Red', 'M', 'Cotton'} {'Blue', 'S', 'Woo

我正面临着一项让我头疼的复杂任务。假设我有这样的选项数组:

$options = {'Color' => {'Red, Green, Blue'},
          'Size' => {'S','M','L'},
          'Material' => {'Wool','Cotton'}
          }
此外,我还有一组映射:

{'Red', 'S', 'Cotton'}
{'Red', 'M', 'Cotton'}
{'Blue', 'S', 'Wool'}
当我以某种方式从selectbox等中选择一个选项时,例如,当我选择“红色”时,我希望有这样一个数组:

$redArray =  {
               'Size' => {'S','M'},
               'Material' => {'Cotton'}
               }
同样,当我选择“M”选项时,结果将是:

$mArray = {
            'Color => {'Red'},
            'Material' => {'Cotton'}
           }
也许我的解释不够清楚,希望你能帮助我…谢谢你使用array\u merge\u recursive

$ar1=array('color'=>"green");
$ar2=array('color'=>"blue");
$result = array_merge_recursive($ar1, $ar2);

output :
   Array
    (
   [color] => Array
    (
        [0] => green
        [1] => blue
    )

   )

使用简单的foreach很容易

// Your initial arrays
$from = array(
    array("Red", "Medium"),
    array("Red", "Large"),
    array("Blue", "Medium"),
    array("Green", "Small"),
    array("Green", "Large")
);

// The output array
$output = array();
for ($i = 0; $i < count($from); $i++) {
    $a = $from[$i];

    if (!array_key_exists($a[0], $output) {
        $output[$a[0]] = array();
    }
    if (!in_array($a[1], $output[$a[0]]) {
        $output[$a[0]][] = $a[1];
    }
}

请注意,在from变量中使用简单的键/值数组可能更容易。

算法?听起来像是一个简单的循环。处理每一个元素。它要么如此简单以至于问题的复杂性被夸大,要么如此复杂以至于问题看起来过于简单。。。需要进一步澄清。好的,让我更新我的问题
// Your initial arrays
$from = array(
    array("Red", "Medium"),
    array("Red", "Large"),
    array("Blue", "Medium"),
    array("Green", "Small"),
    array("Green", "Large")
);

// The output array
$output = array();
for ($i = 0; $i < count($from); $i++) {
    $a = $from[$i];

    if (!array_key_exists($a[0], $output) {
        $output[$a[0]] = array();
    }
    if (!in_array($a[1], $output[$a[0]]) {
        $output[$a[0]][] = $a[1];
    }
}