-1

何時間もグーグルで調べたり、さまざまな本を読んだりしているにもかかわらず、私が作成しようとしている 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>

これでエラーは発生しませんが、あちこちに散らばっており、正しい順序ではないため、ご協力いただければ幸いです。エラーが発生していない場合、何が問題なのか自分ではわかりません。そのため、ループの 1 つに問題があると思われます。

ありがとうございました。

私は得ることを期待しています:

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

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

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

しかし、私が得ているのは次のとおりです。

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

アップデート:

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

このコードを使用して、目的をほぼ達成しました。これが得られる出力です。

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,

誰か助けてくれたらありがとう!!

4

4 に答える 4

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);    
?>

ただし、これはこのことをコーディングする最良の方法ではありません

于 2013-03-19T20:51:51.560 に答える
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/>';
}
于 2013-03-19T20:53:13.987 に答える
0

配列にドル記号がありません:

echo "$numbers[football] men, " ;

する必要があります

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

ただし、この方法で文字列に配列を含めることは間違いを犯しやすいため、悪い習慣です。これは

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

別の問題は、最初のループが終了すると、配列$counterのどのインデックスよりも高い 4 になることです。$numbers次のループ$numbers[4]では、境界外エラーと呼ばれるものを生成するアクセスを試みます。代わりに$football--、最後ではなく、2 番目のループの最初にある必要があります。最初の反復で $football が 3 に設定されてから$numbers[3]アクセスされ、最後の反復で 1 が 0 に変わって$numbers[0]アクセスされます。その後while($football)は true ではなくなり、ループが終了します。

于 2013-03-19T20:37:55.510 に答える
0

シームを探しているのは、配列をループしてそこから出力する方法です。次のようにします。

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

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

あなたが言ったように、より複雑な構造がある場合、サッカーチームに関する事実はこれを行うことができます:

$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 ...
}
于 2013-03-19T20:39:57.313 に答える