php по модулю и print_r результата? - PullRequest
1 голос
/ 16 марта 2012

Я хотел сделать свою собственную четвертьфинальную ничью для лиги чемпионов (завтра, пятница, 16 марта): у меня есть 2 вопроса: во-первых, модуль не работает: он показывает «еще один матч» после каждой записи вмассив, тогда как я хотел, чтобы он записывался каждые два совпадения (каждые 2 записи) ...

Второй вопрос: есть ли лучший способ "напечатать" результат?как print_r без индекса и где я мог бы сказать " добавить \n после каждой записи"?

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

Спасибо за вашу помощь

Ответы [ 3 ]

2 голосов
/ 16 марта 2012

Другой вариант: перемешать массив, затем просто 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
1 голос
/ 16 марта 2012

Модуль работает отлично:

  • Массив начинается пустым.
  • Вы добавляете к нему элемент.
  • Длина равна 1, поэтому 1 % 2, поэтому 1, так верно, что вы добавляете -- another match в массив
  • Так что длина теперь 2
  • На следующей итерации цикла вы добавляете еще один элемент в массив.
  • Длина теперь равна 3, поэтому 3 % 2, поэтому 1, так верно, поэтому вы добавляете -- 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 голосов
/ 16 марта 2012

Модуль работает точно так, как вы говорите.

(count ($ new)% 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
...