-1

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

$options = {'Color' => {'Red, Green, Blue'},
          'Size' => {'S','M','L'},
          'Material' => {'Wool','Cotton'}
          }

另外,我有一组映射:

{'Red', 'S', 'Cotton'}
{'Red', 'M', 'Cotton'}
{'Blue', 'S', 'Wool'}

当我通过某种方式(从选择框等)选择一个选项时,例如,当我选择“红色”时,我想要一个这样的数组:

$redArray =  {
               'Size' => {'S','M'},
               'Material' => {'Cotton'}
               }

同样,当我选择“M”选项时,结果将是:

$mArray = {
            'Color => {'Red'},
            'Material' => {'Cotton'}
           }

也许我的解释不够清楚,希望你能帮助我......谢谢

4

3 回答 3

2

array_merge_recursive例如使用

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

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

   )
于 2013-07-10T09:05:30.793 回答
0

用简单的 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请注意,在变量中采用简单的键/值数组可能更容易。

于 2013-07-10T09:34:11.890 回答
0
input:
{Red, Medium, Cotton}
{Red, Large)
{Blue, Medium)
(Green, Small)
(Green, Large)

$r = array();
foreach($input as $i)
{
    $k = $i[0];
    foreach(array_slice($i, 1) as $s) {
    $r[$k][] = $s;
    $r[$k][] = array_unique($r[$k]);
    }
}
于 2013-07-10T09:30:11.570 回答