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];
}
}