2012-03-15 53 views
1

我想爲冠軍的聯賽做出我自己的四分之一決賽(明天,三月十六日星期五):我有兩個問題:首先模數不起作用:在每次進入後顯示「另一場比賽」陣列,而我想寫它每兩場比賽(每2項)...PHP modulo和print_r的結果?

第二個問題:有沒有更好的方法來「打印」結果?像一個沒有索引的print_r,在那裏我可以說「add \n after each entry」?

<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> 

感謝您的幫助

回答

1

的模工作完美:

  • ,數組的起始空。
  • 給它添加一個元素。
  • 長度爲1,因此1 % 2,所以1,所以truthy,所以添加-- another match到陣列
  • 因此長度爲現在2
  • 接着循環的迭代,則另一元素添加到陣列。現在
  • 長度爲3,那麼3 % 2,所以1,所以truthy,讓你添加-- another match

等。無論你想要做什麼,都不是你告訴服務器要做的事情。

什麼,你可能應該做的是這樣的:

$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等?對於print_r,是的,其實我可以把基本的html代碼放在一個變量中,用'
'似乎是一個很好的解決方案 – Paul 2012-03-16 01:47:45

+0

.hmm,和-1有關? array_shift更改'$ array',所以'count($ array)'是移位後數組中元素的數量......不是嗎? – Paul 2012-03-16 03:21:57

+0

取消設置數組元素確保不會再次選取。對於'-1'......好吧,假設你有'Array('a','b','c')','count'是3,但是最後一個元素是位於'2'。 – 2012-03-16 07:58:05

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

感謝馬克貝克 – Paul 2012-03-16 01:48:04

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 2012-03-16 01:50:56

+2

@保羅這有點怪異..看起來像我的預測是正確的! – Ciaran 2012-03-16 13:49:30

+0

哈哈,很好,你能創建一個函數來找出勝利者嗎? – Paul 2012-03-22 21:32:36