Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] zmienne globalne
siemarek
post 13.08.2008, 12:41:48
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 13.08.2008

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


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)
Go to the top of the page
+Quote Post
golaod
post 13.08.2008, 13:19:43
Post #2





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Jeżeli w jakiejś funkcji nie widać zmiennej, robisz po prostu global $zmienna; (jeśli o to Ci chodzi)
Go to the top of the page
+Quote Post
--kaem--
post 13.08.2008, 13:24:01
Post #3





Goście







Ale jak to się objawia, co się wyświetla? A masz wogóle zmienną globalną foo zdefiniowaną?
Go to the top of the page
+Quote Post
siemarek
post 13.08.2008, 14:38:04
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 13.08.2008

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


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ł.
Go to the top of the page
+Quote Post
czajnikkoko
post 13.08.2008, 15:44:11
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 1
Dołączył: 9.08.2008

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


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. ?>
Go to the top of the page
+Quote Post
dadexix
post 13.08.2008, 16:25:41
Post #6





Grupa: Zarejestrowani
Postów: 439
Pomógł: 21
Dołączył: 28.06.2007
Skąd: Bielsko-Biała

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


  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.  ?>


Ten post edytował dadexix 13.08.2008, 16:26:21


--------------------
"Na przykład zmiennej $jestem_najlepszy przypisujemy wartość logiczną TRUE"
Ja: użyj funkcji[...]
Grins: mów normalnie do mnie a nie po polsku
Ja: normalnie to znaczy jak?
Grins: No w PHP... inaczej mój parser ledwo kuma:)
Go to the top of the page
+Quote Post
siemarek
post 14.08.2008, 09:15:55
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 13.08.2008

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


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.05.2025 - 08:22