2012-03-15 16 views
1

私はチャンピオンのリーグ(明日、3月16日)のために私自身の準々決勝抽選をしたいと思った:私は2つの質問がある:最初にモジュロは動作しません:それは "配列、私はそれが書かれていたが、2つの一致すべて(2つのエントリごとに)...PHPモジュロと結果のprint_r?

2番目の質問:結果を印刷するより良い方法はありますか?インデックスなしのprint_rのように、 ""と入力すると、それぞれのエントリの後に\nと表示されます。あなたの助け

答えて

1

モジュロため

<body> 
<?php 

$array = array("real", "barça", "bayern", "apoel", "chelsea", "milan", "benfica", "marseille"); 

$new = array(); 
$incr = count($array); 

while($incr>0){ 
    $random = rand(0, count($array)); 

    if (!in_array($array[$random], $new)){ 
     $new[] = $array[$random]; 
     if ((count($new) % 2)){ 
      $new[] = " -- another match : "; 
     } 
     $incr--; 
    } 
} 

print_r($new); 


?> 
<p>results</p> 
</body> 

おかげで完璧に働いている:

  • 配列が空を開始します。
  • 要素を追加します。
  • 長さはそんなに長さは今ループの2
  • 次の反復である配列
  • -- another matchを追加するので、あなたが別の要素を追加し、ので、1 % 2、そうtruthyので1 1でありますアレイ。あなたがそうで-- another match

を追加して

  • 長さは、そう1、そう3 % 2、今ではtruthy 3です。あなたがしようとしていることは何でも、それはあなたがサーバーに何を話したかではありません。

    あなたはおそらく、やるべきことは、このようなものです:

    $array = Array(........); 
    while($a = array_shift($array)) { 
        $random = rand(0,count($array)-1); // -1 is important! 
        echo $a." vs. ".$array[$random]."<br />"; 
        unset($array[$random)]; 
        // no need to realign keys since array_shift already does that 
    } 
    
  • +0

    おかげで、面白い、なぜあなたはUNSを使用してくださいet? print_rの場合は、実際には、変数に基本的なhtmlコードを入れることができます。
    とすれば、良い解決策に見えます – Paul

    +0

    うん、およそ-1? array_shiftは '$ array'を変更するので、' count($ array) 'は配列の要素数をシフトした後のものです...そうではありませんか? – Paul

    +0

    配列要素を設定解除すると、再度選択されません。そして、 '-1'の場合...' Array '(' a '、' b '、' c ') 'があり、' count'は3ですが、最後の要素は '2'の位置にあるとします。 –

    0

    あなたはそれを言っているよう弾性率が正確に働いています。

    (カウント(新しい$)%2)){

    when count($new) = 1, 1 % 2 = 1, = true 
    when count($new) = 2, 2 % 2 = 0, = false 
    when count($new) = 3, 3 % 2 = 1, = true 
    when count($new) = 4, 4 % 2 = 0, = false 
    when count($new) = 5, 5 % 2 = 1, = true 
    when count($new) = 6, 6 % 2 = 0, = false 
    
    +0

    ありがとうMark Ba​​ker – Paul

    2

    は、別のオプションは、次にshuffleアレイ要素のそれぞれオフだけpopになり

    $array = array("real", "barça", "bayern", "apoel", "chelsea", "milan", "benfica", "marseille"); 
    
    shuffle($array); 
    
    while($a = array_pop($array)) { 
        echo $a." vs. ".array_pop($array)." <br />"; 
    } 
    

    サンプル出力

    apoel vs. real 
    barça vs. milan 
    marseille vs. bayern 
    chelsea vs. benfica 
    
    +0

    素敵なおかげさよ、いい解決策もあります – Paul

    +2

    @Paulこれはちょっと変なことです。私の予測が正しいように見えます! – Ciaran

    +0

    笑、素敵な、勝者を見つけるための関数を作成できますか? – Paul