PHP For Loop N次基于数组长度

时间:2016-02-11 11:25:40

标签: php arrays for-loop

我有这个数组:

$products = array('0', '1', '2', '3');

我想要这个组合:

0
0,1
0,1,2
0,1,2,3 // my code can't show this result
0,1,3 // my code can't show this result
0,2
0,2,3
0,3
1
1,2
1,2,3
1,3
2
2,3
3

这是我的代码:

$rows = count($products);
for ($i = 0; $i < $rows; $i++) {

    echo $i . '<br>';

    for ($j = $i + 1; $j < $rows; $j++){
        echo $i . $j . '<br>';

        if (!empty($products[$j+1])) {
            echo $i . $j . $products[$j+1] . '<br>';
        }

    }

}

但是,遗憾的是我错过了2个结果:

0,1,2,3
0,1,3

我仍然怀疑这个for循环内部循环,而组合的数量由数组长度决定。

如何获得错过的组合并完美适用于不同的阵列长度?

2 个答案:

答案 0 :(得分:2)

$products = array('0', '1', '2', '3');

    $rows = count($products);  //missing here array count......

    for ($i = 0; $i < $rows; $i++) {

        echo $i . '<br>';

        for ($j = $i + 1; $j < $rows; $j++){
            echo $i . $j . '<br>';

            if (!empty($products[$j+1])) {
                echo $i . $j . $products[$j+1] . '<br>';
            }

        }

    }

答案 1 :(得分:2)

试试这个

    <?php
        $set = array('0', '1', '2','3');
        $power_set = possible_set($set);
        echo "<pre>";
        print_r($power_set);
        echo "</pre>";
        function possible_set($array) {
            $results = array(array( ));
            foreach ($array as $element)
                foreach ($results as $inner_element)
                    array_push($results, array_merge(array($element), $inner_element));

            unset($results[0]);
            $results = array_values($results);
            return $results;
        }
    ?>

https://eval.in/516963