Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmienne lokalne na zmienne globalne
Forum PHP.pl > Forum > Przedszkole
tomilipin
Witam,
od wieków mam ten problem... Szukałem już na tutejszym forum, na forum Webcity, na php.net i nigdzie nie znalazłem rozwiązania sad.gif

Mam pewną funkcję, która tworzy sobie dwie zmienne, które znowu później muszę sprawdzić i wyświetlić odpowiedni komunikat. Wygląda to schematycznie, w wielkim uproszczeniu tak:
  1. <?php
  2. function test($autor, $tresc) {
  3.  if ($autor==&#092;"\" or $tresc==\"\") {
  4.  $error=&#092;"1\";
  5.  }
  6. } // koniec funkcji
  7.  
  8. if ($error==&#092;"1\") {
  9. echo &#092;"Błąd\";
  10. }
  11. else {
  12. echo &#092;"W porządku\";
  13. }
  14. ?>
I oczywiście zawsze pokazuje się "W porządku" bo zapewne nie widać zmiennej $error. Co zrobić aby była ona zmienną globalną?
id4
Witaj

Zwróć wynik funkcji:

  1. <?php
  2. function test($autor, $tresc) {
  3.          if ($autor==&#092;"\" or $tresc==\"\") {
  4.              return $error=&#092;"1\";
  5.          }
  6. }
  7.  
  8. $error= test($autor, $tresc);
  9.  
  10. if ($error==&#092;"1\") {
  11. echo &#092;"Błąd\";
  12. }
  13. else {
  14. echo &#092;"W porządku\";
  15. }
  16. ?>
Fipaj
Nie trzeba...

Niech funkcja zwraca $error. daj na końcu funkcji "return $error;"


@id4: byłeś 5 sekund szybszy biggrin.gif
tomilipin
Ok, id4, jesteś genialny - działa biggrin.gif Dziękuję Wam obu za odpowiedzi ale mam jeszcze jedno pytanie: chciałbym wyświetlić poza funkcją dwie zmienne, użyte wewnątrz niej (a więc lokalne), będzie to $error, i $error_text. Jak to zrobić?

Spróbowałem tak, ale niestety nie działa:
  1. <?php
  2. function test($autor, $tresc) {
  3.  if ($autor==&#092;"\" or $tresc==\"\") {
  4.  return $error[1]=&#092;"1\";
  5.  return $error[2]=&#092;"Wpisz autora\";
  6.  }
  7. }
  8.  
  9. $error= test($autor, $tresc);
  10.  
  11. if ($error[1]==&#092;"1\") {
  12. echo $error[2];
  13. }
  14. else {
  15. echo &#092;"W porządku\";
  16. }
  17. ?>
Liko
  1. <?php
  2. function test($autor, $tresc) {
  3.  if ($autor==&#092;"\" or $tresc==\"\") {
  4.  return array( 1, 'Wpisz autora' );
  5.  
  6.  }
  7. }
  8.  
  9. $error = test($autor, $tresc);
  10.  
  11. if ($error[0]==&#092;"1\") {
  12. echo $error[1];
  13. }
  14. else {
  15. echo &#092;"W porządku\";
  16. }
  17. ?>
tomilipin
Działa biggrin.gif Dziękuję za pomoc!
seemerlin
Można też tak:

  1. <?php
  2. $error = 0;
  3. $error_text = &#092;"\";
  4.  
  5. function test($autor, $tresc) {
  6. global $error,$error_text;
  7. if ($autor==&#092;"\" or $tresc==\"\") {
  8.  $error=&#092;"1\";
  9.  $error_text = &#092;"bląd\";
  10. }
  11. } // koniec funkcji
  12.  
  13. test(&#092;"autor\",\"\");
  14. if ($error==&#092;"1\") {
  15. echo $error_text;
  16. }
  17. else {
  18. echo &#092;"W porządku\";
  19. }
  20. ?>


Chyba wygodniejsze niz ją gdzies przypisywać, albo tworzyc tabele.

Pozdrawiam.
Liko
Cytat(seemerlin @ 2005-06-30 09:14:58)
Chyba wygodniejsze niz ją gdzies przypisywać, albo tworzyc tabele.

Pozdrawiam.

Jakie tabele?
knur_wielki_wszechpotężny
tablice...

EOT,
zamykam.
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.