Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] zmienne globalne
Forum PHP.pl > Forum > Przedszkole
siemarek
Witam
Jak zadeklarować tablicę by była widoczna w wywoływanych funkcjach użytkownika?
Mam w skrypcie:
<? global $tablica; ?> i to działało, po zmianie register_globals=off oczywiście przestało.
Czy zapis:
<? $_POST['zmien[co]']="cos1"; ?>
jest poprawny? lokalnie działa, globalnie nie.
W manualu na stronie http://www.php.net/manual/pl/reserved.variables.globals.php znalazłem taki przykład (co prawda ze zmienną a nie tablicą)

Kod
<?php
       function test() {
           $foo = "local variable";
      
           echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
           echo '$foo in current scope: ' . $foo . "\n";
       }
      
       $foo = "Example content";
       test();
       ?>

Powyższy przykład wyświetli coś podobnego do:
$foo in global scope: Example content
$foo in current scope: local variable

ale i to u mnie nie działa
skrypty testuję na WebServ 2.0 (Apache 2.2.6 PHP 5.2.5 MySQL 4.0.26)
golaod
Jeżeli w jakiejś funkcji nie widać zmiennej, robisz po prostu global $zmienna; (jeśli o to Ci chodzi)
-kaem-
Ale jak to się objawia, co się wyświetla? A masz wogóle zmienną globalną foo zdefiniowaną?
siemarek
Na serwerze gdzie trzymam stronkę register_globals=off (jest wyłączony) i wtedy deklaracja
<? global $zmienna; ?> nie działa.
Rozwiązaniem tego problemu wydało mi się zastosowanie wbudowanej zmiennej (tablicy) $globals, ale nie wiem jak to zrobić, a znaleziony przykład zastosowania $globals nie zadziałał.
czajnikkoko
sprobuj tak zdafiniować zmienną którą chcesz widziec globalnie dzieki tej tablicy

  1. <?php
  2. $GLOBALS['nazwa_twojej_zmiennej']=wartosc_twojej_zmiennej;
  3. ?>


po takiej deklaracji teraz powinienes wszedzie moc uzywac tej twojej zmiennej. Przykładowo jesli chcesz ja wyswietlic

  1. <?php
  2. echo $GLOBALS['nazwa_twojej_zmiennej'];
  3. ?>
dadexix
  1. <?php
  2. $abc = 1;
  3. $globals['abc'] = $abc;
  4. $abc = 2;
  5. echo $globals['abc']; //i tutaj mamy 1 a nie dwa...
  6. ?>


  1. <?php
  2.  function test() {
  3.  $foo = "local variable";
  4.  
  5.  echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
  6.  echo '$foo in current scope: ' . $foo . "\n";
  7.  }
  8.  
  9.  $foo = "Example content";
  10.  test();
  11.  ?>

powinien dać to samo co
  1. <?php
  2.  function test() {
  3.  $foo2 = "local variable";
  4. global $foo;
  5.  echo '$foo in global scope: ' . $foo . "\n";
  6.  echo '$foo in current scope: ' . $foo2 . "\n";
  7.  }
  8.  
  9.  $foo = "Example content";
  10.  test();
  11.  ?>
siemarek
Dzięki wszystkim, uffffffff ale się nakombinowałem ,
problem okazał się banalny, zamiast $GLOBALS używałem $globals ale nie ma tego złego........
pozdrawiam
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.