2017-10-25 18 views
-5

私はすべての組み合わせと順列について異なる質問を見つけました。すべてこれは素晴らしい作品です。しかし、私は2つの値ですべての組み合わせを取得する必要があります。配列のサイズは不明です。私は4つのエントリを持つことができますが、私はさらに多くを持つことができます。PHP:2つの値のすべての組み合わせを見つける

私のアレイと必要な出力のサンプル:

//Array 
$versions = array('1.0.0', '2.0.0'. '3.0.0', '4.0.0'); 

//needed Result: 
$versionCombinations[0]['version1'] = '1.0.0'; 
$versionCombinations[0]['version2'] = '2.0.0'; 
$versionCombinations[1]['version1'] = '1.0.0'; 
$versionCombinations[1]['version2'] = '3.0.0'; 
$versionCombinations[2]['version1'] = '1.0.0'; 
$versionCombinations[2]['version2'] = '4.0.0'; 
$versionCombinations[3]['version1'] = '2.0.0'; 
$versionCombinations[3]['version2'] = '3.0.0'; 
$versionCombinations[4]['version1'] = '2.0.0'; 
$versionCombinations[4]['version2'] = '4.0.0'; 
$versionCombinations[5]['version1'] = '3.0.0'; 
$versionCombinations[5]['version2'] = '4.0.0'; 
+0

私はありがとうございバージョン – Indent

答えて

1

がかもしれませこのようなもの ?

//Array 
    $versions = array('1.0.0', '2.0.0','3.0.0', '4.0.0'); 

    $elem = count($versions); 
    $nb_combination = 0; 

    for($i=0; $i<$elem; $i++){ 
    for($j=$i+1; $j<$elem; $j++){ 

     $versionCombinations[$nb_combination]['version1'] = $versions[$i]; 
     $versionCombinations[$nb_combination]['version2'] = $versions[$j]; 
     $nb_combination++; 

    } 
    } 



    print_r($versionCombinations); 
+0

ありがとうございます。しかし、これは[version1] => 3.0.0 [version2] => 1.0.0のような組み合わせでもあります。 – SandraC

+0

@SandraCが編集しました。修正する必要があります。 – Jilu

+0

本当に素晴らしい。あなたより。これはうまくいく – SandraC

1

このPHPコード(strnatcmpを使用して優れている):

$versions = array('1.0.0', '2.0.0', '3.0.0', '4.0.0'); 

$i=0; 

foreach($versions as $v1) 
{ 
    foreach($versions as $v2) 
    { 
    if(strnatcmp($v1,$v2) < 0) 
    { 
     $versionCombinations[$i]['version1']=$v1; 
     $versionCombinations[$i]['version2']=$v2; 
     $i++; 
    } 
    } 
} 

echo "<pre>"; 
print_r($versionCombinations); 
echo "</pre>"; 

が生成されます。

Array 
(
    [0] => Array 
     (
      [version1] => 1.0.0 
      [version2] => 2.0.0 
     ) 

    [1] => Array 
     (
      [version1] => 1.0.0 
      [version2] => 3.0.0 
     ) 

    [2] => Array 
     (
      [version1] => 1.0.0 
      [version2] => 4.0.0 
     ) 

    [3] => Array 
     (
      [version1] => 2.0.0 
      [version2] => 3.0.0 
     ) 

    [4] => Array 
     (
      [version1] => 2.0.0 
      [version2] => 4.0.0 
     ) 

    [5] => Array 
     (
      [version1] => 3.0.0 
      [version2] => 4.0.0 
     ) 

) 
+0

を比較するために、 'strnatcmp'を使用することをお勧めします。しかし、これは[version1] => 3.0.0 [version2] => 1.0.0のような組み合わせでもあります。 – SandraC

+0

コード – Indent

+0

を更新しました。あなたより。これは動作します – SandraC

関連する問題