Heim >Backend-Entwicklung >PHP-Tutorial > 怎么得到这个组合?得到排列组合结果

怎么得到这个组合?得到排列组合结果

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-13 13:47:041094Durchsuche

如何得到这个组合?得到排列组合结果
属性:颜色 红,黄,蓝。。。。 
  大小 大,小 。。。。 
  容量 1G,2G,3G,5G 。。。 
  。。。。。。。。。 
   

要求得到各个属性值的所有组合: 
比如 红大,红小,红大1G,红小1G,红小2G。。。蓝大,。。 蓝1G。。。。 



------解决方案--------------------

PHP code
<?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);

?> <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn