2011-09-01 16 views
5

ここでの問題は、$picnameoutputで配列を作成した後にprint_rを実行すると、スクリーンショットに表示されるように配列を出力するということです。私のループは1つの値を返すだけです

その後、私はforループを実行して出力を見るだけで、それは私に1つの値を与え、私はなぜその値を選ぶのか分かりません、それは配列の最初のものではありません。

非常に落ち込んでいます。

は、ここに私のコード

<?php 
    $largedir = 'images/headshots/large'; 
    $large = scandir($largedir); 

    $picnameoutput = preg_grep("/adam.*/", $large); 
    print_r($picnameoutput); 

    for ($i=0; $i<count($picnameoutput); $i++); { 
    echo "$picnameoutput[$i]"; 
    } 
?> 

であり、ここであなたはあなたがブラケットの前にfor()後にセミコロン;を持って、私は

enter image description here

+0

として短く書くことができた私は、カウント($のpicnameoutput)によると<$置き換え$ i <= count($ picnameoutput)はすべての値をループします。あなたが使用した構文のためにadam8.jpgを入手しています。 – Tom

+2

ループ内で 'count()'を使用するべきではありません。なぜなら、それはすべてのループで実行されるからです。 'count()'の値を変数に追加し、その変数をループ内でチェックするだけです。 – PeeHaa

答えて

29

を意味するものを見ることができるようにスクリーンショットです。それを除く。

ので

for ($i=0; $i<count($picnameoutput); $i++); { 
echo "$picnameoutput[$i]"; 
} 

は、しかし、私が代わりに

foreach ($picnameoutput as $pic) { 
    echo $pic; 
} 

使用するのは簡単とあなたのループ

よりもさらに速くなる foreach()を使用することをお勧めします

for ($i=0; $i<count($picnameoutput); $i++) { 
    echo "$picnameoutput[$i]"; 
} 

なり

+0

おかげでトリックはしましたが、次の問題になります:) – GrooveChampion

+0

これはすごいです、今私はあなたに別の質問があります。私はちょうど "用"を使用していたとき、それは配列の最初の2つの値を存在しないものとして返していましたが、それぞれの固定されたものを使っていました! – GrooveChampion

+0

@GrooveChampion:いくつかのインデックスが欠落しているため(1と2のように) – genesis

12

あなたのコードが同様に実行されるようにするには、for後にセミコロンを持っている:

for ($i=0; $i<count($picnameoutput); $i++) { 
    ; // Do nothing 
} 
{ 
    echo "$picnameoutput[$i]"; 
} 

はまた、

echo implode('', glob('images/headshots/large/adam*')); 
+0

これは私の最初の試みの一つですが、これまでには長い時間がかかりました...ありがとうございましたが、助言に感謝します。 – GrooveChampion

+0

@GrooveChampionこれは典型的なテキストブックの間違いでさえ心配しないでください。最初の試みの1つとして、あなたのコードは非常に見栄えが良いように見えます。私の1ライナーをあまりにも深刻に取ってはいけない;)。 – phihag

+0

ええ、正規表現について知るにはちょっと時間がかかりましたが、これを理解するために多くの考えを持っていましたが、私が使っている本は何もしないので、自分自身に強制したかったのです。私にとって何もせずに多くの理論を取り上げるのは難しいです... – GrooveChampion

関連する問題