Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] wczytywanie tablicy ze zmiennej
slawexsdz
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 11.09.2013

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


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?

Ten post edytował slawexsdz 29.11.2013, 12:33:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
slawexsdz
post
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 11.09.2013

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


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?

Ten post edytował slawexsdz 29.11.2013, 12:54:57
Go to the top of the page
+Quote Post
com
post
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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ę...

Ten post edytował com 29.11.2013, 12:55:12
Go to the top of the page
+Quote Post
slawexsdz
post
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 11.09.2013

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


bo chciałem sobie funkcje przenieść do oddzielnego pliku i załączyć przez include?
A jest inny sposób, żeby ją załączyć?
Go to the top of the page
+Quote Post
com
post
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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. //...

Go to the top of the page
+Quote Post
slawexsdz
post
Post #7





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 11.09.2013

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


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

Ten post edytował slawexsdz 29.11.2013, 13:19:30
Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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"));


Ten post edytował com 29.11.2013, 13:26:49
Go to the top of the page
+Quote Post
slawexsdz
post
Post #9





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 11.09.2013

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


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?
Go to the top of the page
+Quote Post
com
post
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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

Ten post edytował com 29.11.2013, 23:07:58
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 06:48