请教一个编程难题

jusinq 2009-08-03 02:11:21
比如 我有一个数组
$arr = array('颜色' => array('红色','白色'),'形状' => array('方形','圆形'));
我如何把它变成
$arr = array(array('红色','方形'),array('红色','圆形'),array('白色','方形'),array('白色','圆形');

类似一个乘积的形式,请高手给出,一般解法,比如再加个材料,也可以获得这种乘积形式.
...全文
73 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序猿之殇 2009-08-04
如果颜色和形状是一对一的话,

$arr = array('颜色' => array('红色','白色'),'形状' => array('方形','圆形'));

function combin($a, $b)
{
return array($a,$b);
}
var_dump(array_map(combin,$arr['颜色'], $arr['形状']));
回复
foolbirdflyfirst 2009-08-04
$arr = array('颜色' => array('红色','白色'),'形状' => array('方形','圆形')); 
$s = $arr;
$r = array_shift($arr);
foreach($arr as $k=>$val)
{
$n = array();
foreach($r as $v)
{
foreach($val as $v2)
{
$n[] = $v.'-'.$v2;
}

}
$r = $n;
}
echo "<pre/>";
print_r($r);

这类型的问题貌似提了不少次。
http://topic.csdn.net/u/20090723/10/e899a272-dd18-4389-85cf-83aa78e7c368.html
这里有一个。
回复
jusinq 2009-08-04
没人知道吗?
回复
jusinq 2009-08-04
[Quote=引用 4 楼 foolbirdflyfirst 的回复:]
PHP code$arr=array('颜色'=>array('红色','白色'),'形状'=>array('方形','圆形'));$s=$arr;$r=array_shift($arr);foreach($arras$k=>$val)
{$n=array();foreach($ras$v)
{foreach($valas$v2)
{$n[]=$v.'-'.$v2;
}

}$r=$n;
}echo"<pre/>";print_r($r);
这类型的问题貌似提了不少次。
http://topic.csdn.net/u/20090723/10/e899a272-dd18-4389-85cf-83aa78e7c368.html
这里有一个。
[/Quote]

太感谢了!!!!正解啊!!!
回复
zl807108355 2009-08-04
这个问题太easy
!foreach 轻松帮你解决!
回复
jusinq 2009-08-03
一般性解法怎么办?
回复
yemingwy 2009-08-03
这是原理



$a = array(1,2);
$b = array(3,4);

$c = array();
foreach( $a as $v1 )
{
foreach( $b as $v2 )
{
$c[] = array( v1, v2 );
}
}

var_dump( $c );

回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告