Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] pętla foreach wyświetla tylko pierwszy rekord, a chciałbym całość
barblask
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 23.07.2010

Ostrzeżenie: (0%)
-----


Pierwszy post więc witam wszystkich forumowiczów.

skrypt działać ma tak:
Pobieram dane z pliku
zapisuję każdy wiersz do tablicy
filtruje linie które mają być wyświetlanie
po pierwszej linii daje enter
zapisuję całość do pliku (dla wygody wstępnie samo echo)

W ten sposób działa wyświetlenie na stronie w/w skryptu:
  1. $lines = file ( 'art/wiersz.txt' );
  2. foreach ( $lines as $number => $line ) {
  3. $akapit[0] = '15';
  4. $akapit[1] = '20';
  5. $akapit[2] = '28';
  6. $akapit[3] = '33';
  7. $akapit[4] = '38';
  8. $akapit[5] = '43';
  9. $wersy = $akapit[5];//$akapit[rand (5,5)];
  10. if ( $number >= 1 AND
  11. $number <= $wersy AND
  12. $number != 22 AND
  13. $number != 23 AND
  14. $number != 24 ) {
  15. echo($line);
  16. if ( ( $number == 1 ) ){
  17. echo("\n");
  18. }
  19. }
  20. }


jednak gdy wyświetlam całość takim kodem pokazuje mi się tylko pierwsza linia. Proszę o wytłumaczenie mi gdzie robię błąd.
  1. function pliczek(){
  2. $lines = file ( 'pierwszy.txt' );
  3. foreach ( $lines as $number => $line ) {
  4. /*$akapit[0] = '15';
  5.   $akapit[1] = '20';
  6.   $akapit[2] = '28';
  7.   $akapit[3] = '33';
  8.   $akapit[4] = '38';*/
  9. $akapit[5] = '43';
  10. $wersy = $akapit[5];//$akapit[rand (0,5)];
  11. if ( $number >= 1 AND
  12. $number <= $wersy AND
  13. $number != 22 AND
  14. $number != 23 AND
  15. $number != 24 ) {
  16. return($line);
  17. if ( ( $number == 1 ) ){
  18. return("\n");
  19. }
  20. }
  21. }
  22. }
  23.  
  24. $drugitxt = pliczek('text');
  25. echo $drugitxt; //docelowo zapis do pliku zamiast echa
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bastard13
post
Post #2





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


W ten sposób:
  1. function pliczek(){
  2. $ob = '';
  3. $lines = file ( 'art/wiersz.txt' );
  4. for($i=0;$i<count($lines);$i++) {
  5. $ob .= $i.'. '.$lines[$i].'<br>';
  6. }
  7. return $ob;
  8. }

Błąd ci wyrzuca, bo w for nie było ostatniego i przy dolarze. Poza tym nie masz teraz zmiennych $line i $number, bo nie rozbijasz tablicy foreach'em. I return powinien być za pętlą for.

Ten post edytował bastard13 23.07.2010, 20:01:10
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 18:18