2013-03-19 3 views
-1

, несмотря на часы работы в Интернете и чтение различных книг. Я не могу представить, на что я нацелен в PHP-программе, которую я пытаюсь создать (я новичок в этом!). В принципе, для начала я просто хотел создать простой массив и попытаться вывести свои любимые футбольные команды, их позицию или факты о них, прежде чем я попаду во что-то слишком сложное (к счастью, даже это было сложно!). Это то, что я получил до сих пор:Выходной массив PHP

<?php 
    <html> 
    <head> 
    <title>Football teams</title> 
    </head> 

    <body> 
    <?php 


    $numbers = array("one", "two", "three", "four"); 

    $counter = 0; 
    do { 
     if($counter > 0) { 
      $verse = true; 
     } 
     echo "$numbers[$counter] " ; 
     if ($verse) { 
      echo "Team " ; 
     } 
     else { 
      echo "Teams" ; 
     } 
     print "are the best teams in the world <br/>" ; 
     $counter++; 
    } while($counter < 4); 
    $football = $counter; 
    while($football) { 
     echo "$numbers[$football] men, " ; 
     if ($verse) { 
      echo "n<br/>" ; 
     } 
     echo "and rarely lose any games\n\n<br/><br/>" ; 
     $football--; 
    } 
?> 
    </body> 
    </html> 

Теперь, когда работает без каких-либо ошибок, но все это за место и не в правильном порядке, так что я бы признателен за любую помощь. Не могу понять, что не так, когда ошибок нет, поэтому я подозреваю, что есть проблема с одним из циклов.

спасибо.

Я ожидаю получить:

т.д.

Но то, что я получаю:

one team are the best team in the world 
two teams are the best team in the world 
three teams are the best team in the world 
four teams are the best team in the world 

UPDATE:

$counter = 0; 
do { 
if($counter > 0) { 
$verse = true;  
    } 
echo "$numbers[$counter] " ; 
if ($verse) {` 
     echo "team " ; 
    } 
    else { 
     echo "teams " ; 
    } 
    print "are the best teams in the world<br/>" ; 
    $football = $counter; 
    while($football) { 
    echo "$numbers[$football] teams, " ; 
    if ($verse) { 
     echo "<br/>" ; 
    } 
    echo "and rarely lose any games\n\n<br/><br/>" ; 
    $mower--; 
} 
$counter++; 
} while($counter < 10); 
?></body> 
</html> 

Используя этот код I Я почти достиг своей цели, это t он выход я получаю:

one team are the best team in the world, 
two teams are the best team in the world, 
two teams, 
and rarely lose any games 

three teams are the best team in the world, 
three teams, 
and rarely lose any games 

two teams, 
and they rarely lose any games, 

four teams are the best team in the world, 
four teams, 
and they rarely lose any games, 

НО, ЧТО Я ХОЧУ ЭТО:

one team are the best team in the world, 
and they rarely lose any games, 

two teams are the best team in the world, 
two teams, 
and they rarely lose any games, 

three teams are the best team in the world, 
three teams, two teams, 
and they rarely lose any games, 

four teams are the best team in the world, 
four teams, three teams, two teams, 
and they rarely lose any game, 

Спасибо, если кто-то может помочь !!

+5

отступа код Проклятье !! –

+0

Я думал, что знаю, не знаю, что случилось. Должен ли я удалять и репонировать? – 2013-03-19 20:27:50

+0

следует отложить теперь, пожалуйста, проверьте –

ответ

0

Вы пропустили знак доллара в массиве:

echo "$numbers[football] men, " ; 

должен быть

echo "$numbers[$football] men, " ; 

Это плохая практика, хотя включать массивы в строки таким образом, как это легко сделать ошибки. Это было бы лучше, так как

echo $numbers[$football] . " men, " ; 

Другая проблема заключается в том, что, когда первый цикл завершается $counter будет 4, которая выше, чем любой из индексов $numbers массива. В следующем цикле вы пытаетесь получить доступ к $numbers[4], который создает так называемую ошибку за пределами границ. Вместо этого $football-- должен находиться в начале второго цикла, а не в конце. Теперь первая итерация, $ football будет установлена ​​в 3, тогда будет получен доступ к $numbers[3], и в финальной итерации 1 получится 0 и $numbers[0] будет доступен. После этого while($football) перестает быть истинным, и цикл выходит.

+0

Это была только опечатка, моя проблема в том, что я думаю, что цикл действительно выходит рано ... – 2013-03-19 20:40:14

0

То, что вы ищете швы, как быть в цикле через массив и выводить из него все.Как это так:

$myArray = array('element1', 'element2', ...); 

foreach ($myArray as $element) 
{ 
    echo $myelement; 
} 

Если у вас есть какая-то более сложная структура, как вы сказали, факты о footballteams вы можете сделать это:

$teams = array(
    array(
     'name' => 'Team1', 
     'fact1' => 'fact1', 
     ... etc ... 
    ), 
    array(
     'name' => 'Team1', 
     'fact1' => 'fact1', 
     ... etc ... 
    ), 
    ... etc ... 
); 

foreach ($teams as $team) 
{ 
    echo "Teamname: {$team['name']}"; 
    echo "Fact1: {$team['fact1']}"; 
    ... etc ... 
} 
2

Да дорогой, ты прав. вы просто выходите из цикла раньше.

<?php 
$numbers = array("one", "two", "three", "four"); 
$counter = 0; 
$verse = false; 
do { 
     if($counter > 0) { 
      $verse = true; 
     } 
     echo "$numbers[$counter] " ; 
     if (!$verse) { 
      echo "Team " ; 
     } 
     else { 
      echo "Teams" ; 
     } 
     print "are the best teams in the world <br/>" ; 
     $football = $counter; 
     if($football > 0){ 
      while($football > 0){ 
      echo "$numbers[$football] Teams, " ; 
      $football--; 
      } 
     } 
     if ($verse) { 
      echo "<br/>" ; 
     } 
     echo "and rarely lose any games\n\n<br/><br/>" ; 
     $football--; 
    $counter++; 
} while($counter < 4);  
?> 

Однако это не самый лучший способ, чтобы закодировать эту вещь

+0

Спасибо! Это очень очень близко, но не все еще не совсем :(Я получаю: одна команда - лучшие команды мира две команды лучшие в мире и редко проигрывают любые игры – 2013-03-19 21:02:56

+0

Я отредактировал мой код ... .please check now –

+0

Ах, это так близко. Единственное, что он не делает, это то, что я вложил в окончательное обновление моего вопроса, если вам понравится! В каждом новом стихе он должен обновляться в середине - например atm, он говорит «три команды», но он должен сказать «три команды, две команды» – 2013-03-19 21:39:37

0
$numbers = array("one", "two", "three", "four"); 

$numbersrev = array_reverse($numbers); 

foreach ($numbers as $numbersIten) 
{ 
    echo "Team " . $numbersIten . ' are the best teams in the world<br/>'; 
} 
foreach ($numbersrev as $numbersrevIten) 
{ 
    echo '<br/>'.$numbersrevIten . ' men, <br/> and rarely lose any games <br/>'; 
} 
+1

Убедитесь, что вы форматируете код в будущем .. и, возможно, добавить некоторые подробности о вашем ответе. – MikeSmithDev

Смежные вопросы