Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wczytywanie tablicy ze zmiennej
Forum PHP.pl > Forum > PHP
slawexsdz
Witam.
Chciałbym osiągnąć taki efekt:
  1. $europa = array('Polska', 'Anglia', 'Litwa', 'Francja');
  2. echo $europa[1] ;


moim celem jest wczytanie elementów tablicy ze zmiennej (jedna zmienna dla wszystkich elementów)
Próbuję zrobić coś takiego, ale niestety bez skutku:

  1. $lista_panstw = "'Polska', 'Anglia', 'Litwa', 'Francja'";
  2.  
  3. $europa = array($lista_panstw);
  4. echo $europa[1] ;


w czym tkwi problem?
nospor
Zrob sobie:
print_r($europa);
a sam zobaczysz w czym problem.....

Jak juz tak bardzo tego potrzebujesz i nie mozesz normalnie zrobic, to poczytaj o EVAL.
Ale smiem podejrzewac, ze jakbys doklanie opisal po co to i skad te dane, to daloby sie to zrobic po ludzku
slawexsdz
Cały skrypt ma spełnić następujące zadania
1. pobrać zawartość katalogu
2. wczytać pliki z określonym rozszerzeniem
3. wykonać określone operację dla plików

Na razie mam coś takiego:
  1. function wczytywanie_zawartosci_katalogu_okreslonego_typu ($path, $rozsz) {
  2. function rozszerzenie($plik){
  3. preg_match("/\.([^\.]+)$/", $plik, $matches);
  4. return($matches[1]); }
  5.  
  6. //$path = "katalog"; //ścieżka
  7. $dir = new DirectoryIterator($path);
  8. foreach ($dir as $fileinfo) {
  9.  
  10. $rozsz_spr = rozszerzenie($fileinfo);
  11.  
  12. if($rozsz_spr == $rozsz){ //pobieramy dla przykładu tylko pliki z rozszerzeniem txt
  13. $fileinfo = "'".$fileinfo."', ";
  14. $lista = $fileinfo.$lista; }} return $lista;
  15. }



w efekcie otrzymuję coś takiego 'nazwatekstu1.txt', 'nazwatekstu2.txt' itd

Chciałbym to wrzucić do tablicy, aby móc wykonać zbiorowe operacje dla tych plików.

Nie mam pomysłu jak to zrobić inaczej...;/



Wpisałem

  1. print_r($europa);
  2. Array ( [0] => 'Polska', 'Anglia', 'Litwa', 'Francja' )


pierwszy element tablicy jest przypisany do wszystkich nazw. Jak zrobić, żeby poszczególne elementy były widziane oddzielnie?
com
no to z $lista zrób sobie tablice, a nie jakieś dziwacta tam tworzysz... czyli poprostu $lista[] = $fileinfo; oczywiscie bez $fileinfo = "'".$fileinfo."', "; bo to jest nie potrzebne wink.gif

i dbaj o ten kod bo masz "syf" wink.gif

Ponadto funkcja w funkcji questionmark.gif naprawdę...
slawexsdz
bo chciałem sobie funkcje przenieść do oddzielnego pliku i załączyć przez include?
A jest inny sposób, żeby ją załączyć?
com
no to przecież nikt Ci nie broni? Tylko nie wrzuca sie w ciele jeden funkcji innej... funkcja jest poto, żeby można było z niej korzystać w całym skrypcie, a nie wewnatrz jedenej okreslonej, bo wtedy poco robić z tego funkcje?


bo masz to tak:
  1. function wczytywanie_zawartosci_katalogu_okreslonego_typu ($path, $rozsz) {
  2. function rozszerzenie($plik){
  3. preg_match("/\.([^\.]+)$/", $plik, $matches);
  4. return($matches[1]); }
  5. //...

a powinno być tak :
  1. function rozszerzenie($plik){
  2. preg_match("/\.([^\.]+)$/", $plik, $matches);
  3. return($matches[1]);
  4. }
  5. function wczytywanie_zawartosci_katalogu_okreslonego_typu ($path, $rozsz) {
  6. //...

slawexsdz
jasne, słuszna uwaga. Pozmieniam te funkcje.

  1. function wczytywanie_zawartosci_katalogu_okreslonego_typu($plik){
  2. preg_match("/\.([^\.]+)$/", $plik, $matches);
  3. return($matches[1]);
  4. }
  5.  
  6. $path = "baza_elementow_tekstowych"; //ścieżka
  7. $dir = new DirectoryIterator($path);
  8. foreach ($dir as $fileinfo) {
  9.  
  10. $rozsz = wczytywanie_zawartosci_katalogu_okreslonego_typu($fileinfo);
  11.  
  12.  
  13. if($rozsz == "txt"){ //pobieramy dla przykładu tylko pliki z rozszerzeniem txt
  14. echo $fileinfo;
  15. }}
  16.  
  17.  


mam plik wyświetlający zawartość katalogu. Wyświetla nazwy plików tekstowych.

Niestety nie wiem, w jaki sposób 'wrzucić' te nazwy do tablicy, tak aby każda nazwa tekstu odpowiadała jednemu elementowi tablicy.
Bardzo proszę o pomoc. I dzięki za nakierowanie, ale dopiero zaczynam zabawę z php więc do mnie trzeba jak do cepa... smile.gif
com
dobra to zacznijmy od tego wczytywanie_zawartosci_katalogu_okreslonego_typu() naprawde chcesz za kazdym razem wpisywać taka długą nazwę?

Daje Ci A a Ty robisz itak z tego B...
  1. function rozszerzenie($plik){
  2. preg_match("/\.([^\.]+)$/", $plik, $matches);
  3. return($matches[1]);
  4. }
  5. function wczytywanie_zawartosci_katalogu_okreslonego_typu ($path, $rozsz) {
  6. $lista = [];
  7. $dir = new DirectoryIterator($path);
  8. foreach ($dir as $fileinfo) {
  9.  
  10. $rozsz_spr = rozszerzenie($fileinfo);
  11.  
  12. if($rozsz_spr === $rozsz) //pobieramy dla przykładu tylko pliki z rozszerzeniem txt
  13.  
  14. $lista[] = $fileinfo;
  15. }
  16. return $lista;
  17. }
  18.  
  19. var_dump(wczytywanie_zawartosci_katalogu_okreslonego_typu (".", "txt"));
slawexsdz
niestety nie działa. poprawiłem funkcję if, bo brakuje jednego {

a może inaczej.
Czy jest jakiś prosty sposób na wczytanie zawartości katalogu do tablicy?
com
Następnym razem napisz, że 'nazwatekstu1.txt', 'nazwatekstu2.txt' że taki wynik jest zamierzony tylko tak to nie działa, jak pozamieniasz te funkcje, bo nie analizowałem tego co tam napisałeś, tylko skupiłem się na tym co chciałeś uzyskać.. Teraz Będzie Ci działać wink.gif
  1. function rozszerzenie($path){
  2. return end(explode('.', $path));
  3. }
  4. function wczytywanie_zawartosci_katalogu_okreslonego_typu ($path, $rozsz) {
  5. $lista = [];
  6. $dir = new DirectoryIterator($path);
  7. foreach ($dir as $fileinfo) {
  8. if($fileinfo->isDot()) continue;
  9. $rozsz_spr = rozszerzenie($fileinfo->getFilename());
  10.  
  11. if($rozsz_spr === $rozsz) //pobieramy dla przykładu tylko pliki z rozszerzeniem txt
  12.  
  13. $lista[] = $fileinfo->getFilename();
  14. }
  15. return $lista;
  16.  
  17. }
  18. $out = wczytywanie_zawartosci_katalogu_okreslonego_typu (".", "txt");
  19.  
  20. var_dump($out);


Cytat
poprawiłem funkcję if, bo brakuje jednego {

może i pisałem z placa ale niczego Ci tam nie brakuje, w jedno-linikowych ifach { } jest nie potrzebne smile.gif
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.