Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Mały problem z pętlą i tablicą :(
Setesh
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


Witam.

Mam (pewnie wg was) mały problem ze sprawdzeniem czy wartość jest w tablicy. Będę wdzięczny za pomoc bo już nie wiem jak to zrobić (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Kod :
  1. <?php
  2. function CheckLanguages($Lang)
  3. {
  4. $Languages = array("pl" => "Polski",
  5.                    "en" => "English",
  6.                    "de" => "Deutsch",
  7.                    "ru" => "Russish");
  8.  
  9. for($i=0; $i<$Languages; $i++)
  10.    {
  11.     if($Languages[0][$i] == $Lang)
  12.       {
  13.        $Lang_supported = true;
  14.        echo '<br>Język obsługiwany : "'.$Lang.'"';
  15.        break;
  16.       }else{
  17.             $Lang_supported = false;
  18.            };
  19.    }      
  20. if($Lang_supported == false)  echo '<br>Język NIE obsługiwany : "'.$Lang.'"';
  21. }
  22.  
  23. ?>


wywołanie przez :
  1. <?php
  2. CheckLanguages("pl");
  3. ?>

jakoś źle mi działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Wie ktoś co robię źle ? (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

W dodatku coś mi ten kod zżera procesor (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował Setesh 14.11.2008, 21:57:57
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. <?php
  2. function CheckLanguages($Lang)
  3. {
  4.    $Languages = array("pl" => "Polski",
  5.                   "en" => "English",
  6.                   "de" => "Deutsch",
  7.                   "ru" => "Russish");
  8.  
  9.    echo isset($Languages[$Lang]) ? 'obslugiwany' : 'nieobslugiwany';
  10. }
  11. ?>

Ja bym się jednak zastanowił nad zwracaniem (return) w funkcji prawdy lub fałszu zamiast wypisywania komunikatu. Wtedy kod wyglądałby tak:
  1. <?php
  2. function CheckLanguages($Lang)
  3. {
  4.    $Languages = array("pl" => "Polski",
  5.                   "en" => "English",
  6.                   "de" => "Deutsch",
  7.                   "ru" => "Russish");
  8.  
  9.    return isset($Languages[$Lang]);
  10. }
  11.  
  12. // i wywolanie funkcji nieco inne niz Twoje
  13. echo CheckLanguages('pl') ? 'obslugiwany' : 'nieobslugiwany';
  14. ?>


Ten post edytował phpion 14.11.2008, 22:00:12
Go to the top of the page
+Quote Post
Setesh
post
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


Dzięki wielkie za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Jestem początkujący a w dodatku rzadko w php coś robię więc wielkie dzięki jeszcze raz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Sorki za nowy post ale edytowane rzadko kto czyta (bo nie są wyróżniane a szkoda (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) )

idąc ostatnią twoją podpowiedzią chciałem wykonać sprawdzenie ale jakoś mi nie wychodzi - próbowałem na 2 sposoby i nie wiem jak to zrobić (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

kod :
  1. <?php
  2. if($Lang == "")
  3.   {
  4.    $Lang = "pl";
  5.   }else{
  6.         if(CheckLanguages($Lang))
  7.           {
  8.            echo "obsługiwany"; // tu dalsze instrukcje
  9.           }else{
  10.                 echo "nieobsługiwany"; // tu dalsze instrukcje
  11.                };
  12.        };
  13. ?>


lub tak : (co pewnie każdy wyśmieje bo tak się pewnie nie robi)

  1. <?php
  2. if((echo CheckLanguages($Lang) ? 'T' : 'N') == T);
  3.   {
  4.    echo "<br>obsługiwany<br>";
  5.    $Path = 'root/'.$Lang.'/settings.php';
  6.    include($Path);
  7.   }else{
  8.         echo "<br>nieobsługiwany<br>";
  9.         $Path = 'root/pl/settings.php';
  10.         include($Path);
  11.        };
  12. ?>


Ogólnie chciałbym ustawić ścieżkę do pliku konfiguracyjnego wg danego języka a jak takiego nie ma to aby ustawił domyślny czyli polski ale wywala mi błąd (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował Setesh 14.11.2008, 22:57:16
Go to the top of the page
+Quote Post
lukaszgolder
post
Post #4





Grupa: Zarejestrowani
Postów: 141
Pomógł: 17
Dołączył: 2.04.2008
Skąd: z Zabrza

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


Tą drugą wersje musisz zrobić tak:
  1. <?php
  2. if(CheckLanguages($Lang)); 
  3.   {
  4.    echo "<br>obsługiwany<br>";
  5.    $Path = 'root/'.$Lang.'/settings.php';
  6.    include($Path);
  7.   }else{
  8.         echo "<br>nieobsługiwany<br>";
  9.         $Path = 'root/pl/settings.php';
  10.         include($Path);
  11.        };
  12. ?>


Ten post edytował lukaszgolder 14.11.2008, 23:03:40
Go to the top of the page
+Quote Post
Setesh
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


Dzięki WIELKIE (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (tak krzykliwe ale wyraża moje zadowolenie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )

To chyba wszystko co mi do szczęścia potrzebne przy pisaniu z php aktualnie więc jakby co można będzie pewnie zamknąć temat - no chyba że ktoś jeszcze będzie pisał tu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

// EDIT :

Ok coś mi nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Jakoś nie chce mi zapamiętać wartości w zmiennej $Lang (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

index.php :
  1. <?php
  2. $Lang="de";
  3. echo '<br>0 '.$Lang; // Wyświetla de
  4. include("root/func/php/func_lang.php"); // plik z funkcjami
  5.  
  6. echo '<br>"'.LoadLanguages().'"'; // Tu już nie pamięta zmiennej
  7. ?>


func_lang.php :
  1. <?php
  2. function LoadLanguages()
  3. {
  4. echo '<br>1 '.$Lang; // tu już nie pamięta
  5. //if($Lang == "") $Lang="pl"; // tutaj było jakby język był "pusty" to defaultowy polski i jak to zostawić to działa wszystko ale językiem zawsze jest pl a nie ten co na początku w index.php ustawiłem :(
  6. if(CheckLanguages($Lang))
  7.   {
  8.    echo '<br>2 '.$Lang; // tu nie wiem bo już wcześniej nie pamięta :(
  9.    $Path = 'root/lang/'.$Lang.'/settings.php';
  10.   }
  11. return $Path;
  12. }
  13.      
  14. function CheckLanguages($Lang)
  15. {
  16. echo '<br>3 '.$Lang; // Tu tak samo jak w pkt echo 2 :(
  17. $Languages = array("pl" => "Polski",
  18.                    "en" => "English",
  19.                    "de" => "Deutsch",
  20.                    "ru" => "Russish");
  21.  
  22. return isset($Languages[$Lang]);
  23. }
  24.  
  25. ?>


Wie ktoś co robię źle ?

Ten post edytował Setesh 15.11.2008, 08:50:36
Go to the top of the page
+Quote Post
ayeo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!

W funkcji nie masz przecież tej zmiennej. Poczytaj o zasięgu zmiennych. Zrób tak:
LoadLanguages( $Lang );

Pozdrawiam!
Go to the top of the page
+Quote Post
Setesh
post
Post #7





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


Trochę się wkurzyłem i kupiłem knigę o php - wprawdzie z Helionu ale jest fajna (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) "PHP 4 od podstaw" Jak dla mnie super (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

ayeo - dzięki za pomoc ale o tym samym już pomyślałem po drodze do domu tylko wydawało mi się trochę takie nieciekawe że jedna zmienna będzie przenoszona z jednej funkcji do następnej ale inaczej nie da się chyba (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ok jakby co to jeszcze tu trochę pomęczę o pomoc ale mam nadzieję że nie będę musiał (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

teraz wygląda to tak :

index.php :
  1. <?php
  2. $Lang="zm";
  3. include("root/func/php/func_lang.php");
  4. echo '<br>"'.LoadLanguages($Lang).'"';
  5. ?>


func_lang.php
  1. <?php
  2. function LoadLanguages($Lang)
  3. {
  4. if(!CheckLanguages($Lang))
  5.   {
  6.    $Lang = "pl";
  7.   };
  8. return $Path = 'root/lang/'.$Lang.'/settings.php';
  9. }
  10. //------------------------------------------------------
  11. function CheckLanguages($Lang)
  12. {
  13. $Languages = array("pl" => "Polski",
  14.                    "en" => "English",
  15.                    "de" => "Deutsch",
  16.                    "ru" => "Russkij");
  17. return isset($Languages[$Lang]);
  18. }
  19.  
  20. ?>


I jeszcze jedno pytanie - jak pobrać z tablicy wartości "Polski" "english" itp ?

bo jakoś nie mogę tak :
  1. <?php
  2. $Info = $Languages [0][1];
  3. ?>
(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
bim2
post
Post #8





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


  1. <?php
  2. echo $Languages['pl']; //wyswietli Polski
  3. echo $Languages['en']; //wyswietli English
  4. ?>


EDIT:
Piszesz, że pomogłeś, więc daj punkty pomógł dla Ayo. Przy jego postach jest taki guziczek POMÓGŁ ^^

Ten post edytował bim2 15.11.2008, 10:11:30
Go to the top of the page
+Quote Post
Setesh
post
Post #9





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


Ogólnie dałem wszystkim POMÓGŁ bo pomogliście mi i to bardzo (każdy na swój sposób a dobry dla mnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )
Go to the top of the page
+Quote Post

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: 8.10.2025 - 08:31