我正面临一项令我头痛的复杂任务。假设我有这样的选项数组:
$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'}
}
也许我的解释不够明确,希望你能帮助我......谢谢
答案 0 :(得分: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
)
)
答案 1 :(得分: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]);
}
}
答案 2 :(得分: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
变量中使用简单的键/值数组可能更容易。