属性:颜色       红,黄,蓝。
      大小       大,小 。
      容量       1G,2G,3G,5G 
      要求得到各个属性值的所有组合:
比如 红大,红小,红大1G,红小1G,红小2G蓝大,。。 蓝1G。
应该是用多维数组,数组:$products_options[] = array('option_id'=>$products_options_id,    "products_options_value"=>$products_options_value);$products_options_value也是对应数组:
$products_options_value[] = array( 'option_id'=>$products_options_id,'text' => $products_options );
请大家帮忙看1下。谢谢。

解决方案 »

  1.   

    你要的是这个不?
    注意不能有属性为空的属性集<?php$color  =   array("红", "黄", "蓝");
    $size   =   array("大", "小");
    $cap    =   array("1G", "2G", "3G", "5G");$foo    =   array($color, $size, $cap);function get_all($e)
    {
        $elem_total = count($e);
        $max = 1;
        for ($i=0; $i<$elem_total; $i++) {
            $len = count($e[$i])+1;
            $elem_size[] = $len;
            $max *= $len;
        }   
        for ($i=1; $i<$max; $i++) {
            $m = $i; 
            $item = ""; 
            $ct = 0;
            for ($j=0; $j<$elem_total; $j++) {
                $n = $m%$elem_size[$j];
                $item .= $n>0?$e[$j][$n-1]:"";
                $ct += $n>0?1:0;
                $m = (int)($m/$elem_size[$j]);
            }   
            if ($ct>=2)
                $all[] = $item;
        }   
        return $all;
    }$ret = get_all($foo);
    print_r($ret);?>
      

  2.   

    果然,几个月不用,我又开始把php当C语言用了
    $len = count($xxx); 
    for($i=0; $i<$len; $i++)了
    就是没有用foreach的意识