比如 我有一个数组
$arr = array('颜色' => array('红色','白色'),'形状' => array('方形','圆形'));
我如何把它变成
$arr = array(array('红色','方形'),array('红色','圆形'),array('白色','方形'),array('白色','圆形');类似一个乘积的形式,请高手给出,一般解法,比如再加个材料,也可以获得这种乘积形式.

解决方案 »

  1.   

    这是原理$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 );
      

  2.   

    $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
    这里有一个。
      

  3.   

    如果颜色和形状是一对一的话,$arr = array('颜色' => array('红色','白色'),'形状' => array('方形','圆形'));function combin($a, $b)
    {
    return array($a,$b);
    }
    var_dump(array_map(combin,$arr['颜色'], $arr['形状']));
      

  4.   

    这个问题太easy
    !foreach  轻松帮你解决!