2012-03-15 41 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