1

配列の可能なすべての組み合わせを見つける関数があります。

function combination($array) 
{    
    $results = array(array());

    foreach ($array as $element)
        foreach ($results as $combination)
            array_push($results, array_merge(array($element), $combination));

    return $results;
}

これは多次元配列を返し、機能します。

配列を印刷しようとすると、これを使用します。

foreach (combination($set)  as $combination)
{
    print join("\t", $combination) . "  - ";
}

為に:$set = array('s','f','g');

出力は次のとおりです。- s - f - f s - g - g s - g f - g f s -

今、私が理解できないのは、出力が次のようになる方法で、長さに応じて組み合わせを並べ替える方法です。 - g f s - g s - g f - f s - g - s - f -

4

1 に答える 1

3

これには「usort」を使用する必要があります。

function sortByLength($a, $b) {
    return count($b) - count($a);
}

$result = combination($set);

usort($result, 'sortByLength');

これを 1 回だけ使用する場合は、'sortByLength' を定義する代わりに無名関数として使用することもできます。

$result = combination($set);

usort($result, function($a, $b) {
    return count($b) - count($a);
} );
于 2012-06-01T15:21:03.643 に答える