PHP-php 2维数组(n个类似array(‘男’,'女')array(‘170’,'160',‘150’))中,不同array中元素排列组合,同一元素不组合,求排列方案。

发布于 2017-02-13 07:54:15 字数 1283 浏览 1358 评论 1

应用中的原型,例如购物网站筛选商品 如图:

商品筛选

每一维度只能选择一个选项,这里附加一个不恰当的条件:每一维度必选一个条件
问:如何列出所有不同方案?
这个例子可能不恰当
直接上代码

<?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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晚风撩人 2017-08-14 09:06:40

 <?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:二十岁
...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文