Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wyechować element z array?
Forum PHP.pl > Forum > PHP
Saki
Witam, mam problem z wyechowaniem elementu z array, kod:
najpierw ładujemy plik z tekstem:
  1. require_once('language.php');


w pliku standardowo:
  1. $lang[22] = 'bla bla';
  2. $lang[23] = 'bla bla';
  3. $lang[24] = 'bla bla';


  1. function ograniczenie () {
  2. if ( @$_SESSION['time'] < time() ) {
  3. $_SESSION['time'] = time()+4;
  4. }
  5. else {
  6. die ($lang[22]); // ma zostać wyechowane
  7. }
  8. }


gdy dodam stały tekst zamiat zmiennej działa echowanie:
  1. function ograniczenie () {
  2. if ( @$_SESSION['time'] < time() ) {
  3. $_SESSION['time'] = time()+4;
  4. }
  5. else {
  6. die ('bla bla'); // to echuje
  7. }
  8. }


tylko czemu nie wyswietla mi z die ($lang[22]);?
vokiel
Zasięg zmiennych, $lang nie jest widoczne w funkcji ograniczenie
Saki
Cytat(vokiel @ 27.12.2012, 17:21:34 ) *
Zasięg zmiennych, $lang nie jest widoczne w funkcji ograniczenie


Jak to poprawić?
Smertius
Przekaż $lang jako parametr funkcji. Broń boże nie stosuj zmiennych globalnych.
Saki
Cytat(Smertius @ 27.12.2012, 18:19:36 ) *
Przekaż $lang jako parametr funkcji. Broń boże nie stosuj zmiennych globalnych.


Co masz na myśli?
Teraz zrobiłem tak: global $lang;
i działa, a jak Ty byś to zrobił?

Nie działa jak zrobiłem tak:

  1. function ograniczenie ($lang) { // ani nie działa &$string
  2. //global $lang;
  3. if ( @$_SESSION['time'] < time() ) {
  4. $_SESSION['time'] = time()+4;
  5. }
  6. else {
  7. die ($lang[22]);
  8. }
  9. }
Smertius
Robisz to w taki sposób jak poniżej?
  1.  
  2. require_once('language.php');
  3.  
  4. function ograniczenie ($lang) { // ani nie działa &$string
  5. if ( @$_SESSION['time'] < time() ) {
  6. $_SESSION['time'] = time()+4;
  7. }
  8. else {
  9. die ($lang[22]);
  10. }
  11. }
  12.  
  13. ograniczenie($lang)


Jeśli tak i nie działa, to po prostu nie masz żadnej wartości w zmiennej $lang, zrób sobie var_dumpa i zobacz co tam siedzi.
Saki
Cytat(Smertius @ 27.12.2012, 18:58:44 ) *
Robisz to w taki sposób jak poniżej?
  1.  
  2. require_once('language.php');
  3.  
  4. function ograniczenie ($lang) { // ani nie działa &$string
  5. if ( @$_SESSION['time'] < time() ) {
  6. $_SESSION['time'] = time()+4;
  7. }
  8. else {
  9. die ($lang[22]);
  10. }
  11. }
  12.  
  13. ograniczenie($lang)


Jeśli tak i nie działa, to po prostu nie masz żadnej wartości w zmiennej $lang, zrób sobie var_dumpa i zobacz co tam siedzi.


  1. require_once('language.php');
  2. var_dump($lang);
  3. function ograniczenie ($lang) {
  4. //global $lang;
  5. if ( @$_SESSION['time'] < time() ) {
  6. $_SESSION['time'] = time()+4;
  7. }
  8. else {
  9. die ($lang[22]);
  10. }
  11. }


var_dump wyświetla wszystko ładnie tylko nie wyświetla się "die ($lang[22]);"
  1. [22]=> string(57) "xxxx." [23]=> string(72) "xxxx" [24]=> string(32) "xxx" [25]=> string(34) "xxx"

o co chodzi? czemu nie działa?

jeżeli jest global $lang; to działa wszystko. dziwne
fragov
  1. function ograniczenie ($lang) {
  2. //global $lang;
  3. if ( @$_SESSION['time'] < time() ) {
  4. $_SESSION['time'] = time()+4;
  5. }
  6. else {
  7. die ($lang[22]);
  8. }
  9. }
  10.  
  11. ograniczenie($lang);


Funkcja oraz wywołanie funkcji z przekazanym parametrem.smile.gif
Saki
Z ciekawości, czemu nie należy używać global?
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.