请教一个编程难题

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

类似一个乘积的形式,请高手给出,一般解法,比如再加个材料,也可以获得这种乘积形式.
...全文
95 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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 );

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧