PHP-php 2维数组(n个类似array(‘男’,'女')array(‘170’,'160',‘150’))中,不同array中元素排列组合,同一元素不组合,求排列方案。
应用中的原型,例如购物网站筛选商品 如图:
每一维度只能选择一个选项,这里附加一个不恰当的条件:每一维度必选一个条件
问:如何列出所有不同方案?
这个例子可能不恰当
直接上代码
<?php
$a=array(0=>array("a","b","c"),
1=>array("男","女"),
2=>array("160","170")
//...
);
header("Content-type:text/html;charset=utf-8");
echo "<pre>";
print_r(un($a));
echo "</pre>";
function un($a){
$set = array();
$item_num = count($a);
if($item_num == 0){
return $set;
}
if($item_num == 1){
foreach($a[0] as $k_0=>$v_0){
$set[] = $v_0;
}
}
if($item_num ==2){
foreach($a[0] as $k_0=>$v_0){
foreach($a[1] as $k_1=>$v_1){
$set[] = $v_0.':'.$v_1;
}
}
}
if($item_num ==3){
foreach($a[0] as $k_0=>$v_0){
foreach($a[1] as $k_1=>$v_1){
foreach($a[2] as $k_2=>$v_2){
$set[] = $v_0.':'.$v_1.':'.$v_2;
}
}
}
}
return $set;
}
?>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
<?php
$a=array(
0=>array("a","b","c"),
1=>array("男","女"),
2=>array("160","170"),
3=>array("二十岁","三十岁","四十岁")
);
$set=$a[count($a)-1];
array_pop($a);
while(count($a)>0){
$newSet=array();
$curDimension=array_pop($a);
foreach($curDimension as $val){
foreach($set as $s){
$newSet[]=$val.':'.$s;
}
}
$set=$newSet;
}
print_r($set);
?>
结果:
Array
(
[0] => a:男:160:二十岁
[1] => a:男:160:三十岁
[2] => a:男:160:四十岁
[3] => a:男:170:二十岁
[4] => a:男:170:三十岁
[5] => a:男:170:四十岁
[6] => a:女:160:二十岁
[7] => a:女:160:三十岁
[8] => a:女:160:四十岁
[9] => a:女:170:二十岁
[10] => a:女:170:三十岁
[11] => a:女:170:四十岁
[12] => b:男:160:二十岁
[13] => b:男:160:三十岁
[14] => b:男:160:四十岁
[15] => b:男:170:二十岁
[16] => b:男:170:三十岁
[17] => b:男:170:四十岁
[18] => b:女:160:二十岁
[19] => b:女:160:三十岁
[20] => b:女:160:四十岁
[21] => b:女:170:二十岁
...