Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmienna w funkcji
Forum PHP.pl > Forum > Przedszkole
Lirdoner
Witam, mam raki problem, że z funkcje nie widzą mi zmiennych zdefiniowanych jeszcze przed ich wywołaniem
Na początku mam tak
  1. $result = mysql_query("SELECT * FROM config") or die(mysql_error());
  2. $board_config = array();
  3. while ($row = mysql_fetch_array($result)) {
  4. $board_config[$row['Nazwa']] = $row['Wartosc'];
  5. }

I przez to tworzy się zmienna $board_config['Admin_color']
Ale w funkcji jej nie widać :/
  1. function najlepszy() {
  2. $query = mysql_query("SELECT Nick,Exp FROM users ORDER BY Exp DESC LIMIT 1") or die(mysql_error());
  3. $nick = mysql_fetch_row($query);
  4. echo $board_config['Admin_color'];
  5. echo $nick[0], " - Exp: ", $nick[1];
  6. }

3 linijka już się nie ukazuje :/
Co na to poradzić?
zend
Funkcje mają zasięg lokalny
  1. function xxx($board_config) {} //tak zadziała, musisz tylko pamiętać o przekazywaniu parametru


Możesz jeszcze wykorzystać zmienne globalne
  1. function xxx()
  2. {
  3. global $board_config;
  4. }

Ale jest to metoda zła, wykorzystaj ją tylko w ostatecznośći np kiedy korzystasz z gotowego systemu i nie możęsz ustawić parametrów, ale jeśli nie to użyj perwszego sposobu bo jest poprawny
jaslanin
przekarz zmienną $board_config do funkcji - lepszy pomysł

albo w funkcji daj
  1. global $board_config;
wewnątrz funkcji - gorszy pomysł

Poczytaj także o zasięgu zmiennych. By wiedzieć dlaczego tak się dzieje.
lobopol
Albo przekazuj zmienną do funkcji (function bla($zmienna)) albo dodaj global
  1. function pokaz()
  2. {
  3. global $zmienna;
  4. echo $zmienna;
  5. }
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.