Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] błąd w pętli foreach (?)
Forum PHP.pl > Forum > Przedszkole
pyro
  1. <?php
  2.  
  3. $pliki = array('plik1.php', 'plik2.php', 'plik3.php');
  4. $wyniki = array();
  5. foreach($pliki as $p)
  6. {
  7.  
  8. if(file_exists($p))
  9. {
  10. $wyniki[$p] = 'plik istnieje!';
  11. }
  12. else
  13. {
  14. $wyniki[$p] = 'nie istnieje!';
  15. }
  16.  
  17. }
  18. print_r($wyniki); /* do tej pory jest dobrze, php daje wynik Array (  [plik1.php] => nie istnieje!  [plik2.php] => nie istnieje!  [plik3.php] => nie istnieje! ), czyli tak jak ma być */
  19. foreach($wyniki as $plik => $czy_istnieje);
  20. {
  21. echo 'plik '.$plik.' '.$czy_istnieje.'<br />'; /* ale tutaj wyświetla się tylko ostatni element tablicy, czyli plik "plik3.php nie istnieje!", czasami bierze mnie ślepota i nie widze błędu tongue.gif Co tu jest źle? */
  22. }
  23.  
  24. ?>
nospor
usun srednik za foreach smile.gif
pyro
to właśnie miałem na myśli mówiąc, że czasem beirze mnie ślepota haha.gif (mam małą czcionkę)
kosmos
Witam nie chciałem zakładać nowego tematu

mam problem z wydrukowaniem tablicy obiektów

  1. <?php
  2. Array ( [0] => Person Object ( [name] => John [surname] => Kowalski [age] => 46 [occupation] => Programmer ) [1] => Person Object ( [name] => Bob [surname] => Kowalski [age] => 10 [occupation] => ) ) Array ( [0] => Person Object ( [name] => John [surname] => Kowalski [age] => 46 [occupation] => Programmer ) [1] => Person Object ( [name] => Bob [surname] => Kowalski [age] => 10 [occupation] => ) ) 
  3. ?>



męczę się z tym już niezły kawał czasu i nie mogę znaleźć odpowiedzi.... zwykłe drukowałem tysiące razy a tu questionmark.gif ;/ sciana.gif

z góry dzięki za pomoc
nithajasz
hmm.. a pokazuje Ci jakiś błąd ?
kosmos
Cytat(nithajasz @ 31.05.2008, 13:54:41 ) *
hmm.. a pokazuje Ci jakiś błąd ?


Cannot use object of type Person as array 0 Fatal error



  1. <?php
  2. public function printtt(){
  3. foreach($this->person as $key => $value){
  4.  
  5. print_r($this->person);
  6. print $value['name'];
  7. }
  8.  }
  9. ?>
nithajasz
  1. <?php
  2. print_r ($tab);
  3. Array ( [0] => Person Object ( [name] => John [surname] => Kowalski [age] => 46 [occupation] => Programmer ) [1] => Person Object ( [name] => Bob [surname] => Kowalski [age] => 10 [occupation] => ) ) Array ( [0] => Person Object ( [name] => John [surname] => Kowalski [age] => 46 [occupation] => Programmer ) [1] => Person Object ( [name] => Bob [surname] => Kowalski [age] => 10 [occupation] => ) )
  4.  
  5. for($int = 0; $int < count($tab); $int++){
  6. echo $tab[$int]->name . "\n";
  7. }
  8. ?>


Obiekt to nie tablica..
kosmos
Cytat(nithajasz @ 31.05.2008, 14:10:21 ) *
  1. <?php
  2. print_r ($tab);
  3. Array ( [0] => Person Object ( [name] => John [surname] => Kowalski [age] => 46 [occupation] => Programmer ) [1] => Person Object ( [name] => Bob [surname] => Kowalski [age] => 10 [occupation] => ) ) Array ( [0] => Person Object ( [name] => John [surname] => Kowalski [age] => 46 [occupation] => Programmer ) [1] => Person Object ( [name] => Bob [surname] => Kowalski [age] => 10 [occupation] => ) )
  4.  
  5. for($int = 0; $int < count($tab); $int++){
  6. echo $tab[$int]->name . &#092;"\n\";
  7. }
  8. ?>


Obiekt to nie tablica..


OK dzięki zadziałało wydrukowały się imiona

a da się to zrobić przy pomocy foreach questionmark.gif


  1. <?php
  2. public function printttt(){
  3. for($int = 0; $int < count($this->person); $int++){
  4. echo $this->person[$int]->name . "\n";
  5. }
  6.  }
  7. ?>
nithajasz
Spróbuj tak:

  1. <?php
  2. foreach($tab as $klucz => $wartosc)
  3. echo $tab[$klucz] -> name;
  4. ?>
kosmos
Cytat(nithajasz @ 31.05.2008, 14:25:50 ) *
Spróbuj tak:

  1. <?php
  2. foreach($tab as $klucz => $wartosc)
  3. echo $tab[$klucz] -> name;
  4. ?>


Dziękuję bardzo smile.gif


EDIT

jednak coś jest nie tak

wydruk

Kod
JohnBobKowalski10
Array ( [0] => Person Object ( [name] => John [surname] => Kowalski [age] => 46 [occupation] => Programmer ) [1] => Person Object ( [name] => Bob [surname] => Kowalski [age] => 10 [occupation] => ) )



kod
  1. <?php
  2. public function printtttttt(){
  3.  foreach($this->person as $key => $value)
  4. print $this->person[$key] -> name;
  5. print $this->person[$key] -> surname;
  6. print $this->person[$key] -> age;
  7. print $this->person[$key] -> occupation;
  8.  
  9. print '<br>';
  10.  
  11. print_r($this->person);
  12.  }
  13. ?>



drukuje mi dwa pierwsze imiona nie wiem dlaczego
nospor
skoro w petli chcesz miec kilka operacji, to te operacje musisz wziąść w blok {}.
Pozatym $value jest juz twoim obiektem. nie musisz robic $this->person[$key]. Mało tego że nie musisz. Jest to wręcz nie wskazane, gdyż tak jak ty to teraz robisz, to php by dostać się do żądanej wartości musi przebyć "dłuższą" drogę
  1. <?php
  2. public function printtttttt(){
  3.  foreach($this->person as $key => $value){
  4. print $value -> name;
  5. print $value -> surname;
  6. print $value -> age;
  7. print $value -> occupation;
  8.  
  9. print '<br>';
  10.  }
  11.  
  12. print_r($this->person);
  13.  }
  14. ?>
kosmos
smile.gif

przeoczyłem

dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.