Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Element tablicy jako zmienna
Forum PHP.pl > Forum > Przedszkole
Sleepwalker
Witam.
Próbowałem stworzyć zmienną, której nazwa to jeden z elementów tablicy. Element tablicy jest kolejnym wierszem pliku "odp.txt".
Oto fragment kodu, poniżej opiszę dokładniej problem:

  1. $odp = file('odp.txt');
  2.  
  3. $o11 = 'jajko1';
  4. $o12 = 'jajko2';
  5. $o13 = 'jajko3';
  6.  
  7. $o21 = 'jajco1';
  8. $o22 = 'jajco2';
  9. $o23 = 'jajco3';
  10.  
  11. $o31 = 'jajeczko1';
  12. $o32 = 'jajeczko2';
  13. $o33 = 'jajeczko3';
  14.  
  15. echo $o32;
  16. echo ${$odp[2]};

Przykładowa zawartość pliku "odp.txt":

Kod
o12
o22
o32
o13
o22
o32
o13
o23
o33

Otóż po wywołaniu "echo $o32;" zostaje poprawnie wyświetlony tekst "jajeczko2". Natomiast "echo $$odp[2];" zwraca błąd:

Kod
"Notice: Undefined variable: o32 in C:\wamp\www\ankieta\zobacz.php on line 43"

(brak zdefiniowanej zmiennej o32) podczas gdy chciałbym otrzymać podobny efekt jak w wierszu powyżej.
Błąd nie występuje kiedy tworzę ręcznie tablicę "$odp".
Nie mam pojęcia jak się za to zabrać, dlatego proszę o pomoc fachowca.
marcio
  1. $odp = file('odp.txt');
  2.  
  3. foreach($odp as $key => $var) {
  4.  
  5. $$varFile = $var;
  6.  
  7. }
  8.  
  9. print_r($varFile);

Powinno dzialac.

P.S masz jeszcze http://php.net/manual/en/function.var-export.php
Sleepwalker
Niestety dodanie tego fragmentu kodu nie pomaga. Nie rozumiem nawet jak on działa, jestem w tym temacie zielony, a manual niewiele mi pomógł.

Znalazłem przyczynę. Dla przykładu utworzyłem tablicę $idp "ręcznie".
  1. $o11 = 'jajko1';
  2. $o12 = 'jajko2';
  3. $o13 = 'jajko3';
  4.  
  5. $o21 = 'jajco1';
  6. $o22 = 'jajco2';
  7. $o23 = 'jajco3';
  8.  
  9. $o31 = 'jajeczko1';
  10. $o32 = 'jajeczko2';
  11. $o33 = 'jajeczko3';
  12.  
  13. $idp[0] = 'o12';
  14. $idp[1] = 'o22';
  15. $idp[2] = 'o32';
  16. $idp[3] = 'o13';
  17. $idp[4] = 'o22';
  18. $idp[5] = 'o32';
  19. $idp[6] = 'o13';
  20. $idp[7] = 'o23';
  21. $idp[8] = 'o33';
  22.  
  23. var_export($idp);
  24.  
  25. echo "<BR>".${$idp[2]}."<BR>"; // wyświetlam przykładowy element tablicy
  26.  
  27. $odp = file('odp.txt');
  28.  
  29. var_export($odp);
  30.  
  31. echo "<BR>".${$odp[2]}."<BR>"; // wyświetlam przykładowy element tablicy

Kod
array ( 0 => 'o12', 1 => 'o22', 2 => 'o32', 3 => 'o13', 4 => 'o22', 5 => 'o32', 6 => 'o13', 7 => 'o23', 8 => 'o33', )
jajeczko2
array ( 0 => 'o12 ', 1 => 'o22 ', 2 => 'o32 ', 3 => 'o13 ', 4 => 'o22 ', 5 => 'o32 ', 6 => 'o13 ', 7 => 'o23 ', 8 => 'o33', )
Notice: Undefined variable: o32 in C:\wamp\www\formularz\zobacz.php on line 58

Tablice są na pozór identyczne, jednak zauważyłem, że w tablicy tworzonej z pliku poszczególne wartości mają na końcu znak spacji (w pliku tekstowym "odp.txt" spacji nie ma !).
Co powinienem zrobić, żeby tablica wyglądała identycznie jak tablica $idp ?
thek
Spacja na końcu? To może trim? smile.gif
Sleepwalker
Problem rozwiązany. Zastosowałem dodatkowo parametr FILE_IGNORE_NEW_LINES do file():
  1. $odp = file('odp.txt', FILE_IGNORE_NEW_LINES);

Dzięki za pomoc, pozdrawiam.
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.