Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [] operator not supported
ennics
post
Post #1





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


cześć, mam taki kawałek kodu:
  1. <?php
  2.  
  3.  
  4. function __autoload( $lib_name )
  5. {
  6.   $lib_file = LIB_DIR . str_replace( "_", "/", $lib_name ) . '.lib.php';
  7.   require_once($lib_file);
  8.   $_SESSION['LibrariesON'][] = $lib_name; // <--- 1. błąd
  9. } // end __autoload
  10.  
  11. $Smarty = new Smarty_Load();
  12.  
  13. if (isset($_REQUEST['Modules']) && !empty($_REQUEST['Modules'])) {
  14.   $mod =& $_REQUEST['Modules'];
  15.   include MOD_DIR . ( empty($mod) ? '' : $mod . '/') . $mod . '.mod.php';
  16.   $_SESSION['ModulesON'][] = $mod; // <---- 2. działa ok.
  17. }
  18.  
  19. ?>

<--- 1 - w tym miejscu generuje się błąd:
Fatal error: [] operator not supported for strings in C:\apache\htdocs\cdev\cdev.php on line 50
<--- 2 identyczne przypisanie zmienniej do tablicy SESSION, działa OK

dlaczego php ptraktowało tablicę SESSION jako string i dla dwóch identycznych przypadków zachowuje się inaczej... ?

Ten post edytował ennics 24.08.2005, 09:36:40


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ale takie przypisanie : $_SESSION['ModulesON'][] = ... powoduje że tablica ModulesOn zwiększa swój index o 1. Kazde takie wykonanie zwieksz index.
żeby pobrać musisz podac juz konkretny index ,np: $_SESSION['ModulesON'][0]


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ennics
post
Post #3





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


dokładnie o to mi chodzi, tak się powinno dziać i dzieje się tak ale dla drugiego przypadku, dla pierwszego zmienna lib_name nie chce się przypisać do tablicy $_SESSION['LibrariesON'][]


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Sorki, źle spojarzałem.

Jak głosi komunikat, $_SESSION['LibrariesON'] jest napisem, a dla napisu nie mozesz dac [].
Musisz gdzies przy pierwszym odwolonaiu zrobic:
$_SESSION['LibrariesON'] = array();


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ennics
post
Post #5





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


tego też próbowałem, chociaż trochę bezsensownie, z założenia $_SESSION jest tablicą superglobalną, apache zareagował na tą zmianę tak:
"Wystąpił problem z aplikacją Apache HTTP Server i zostanie ona zamknięta. Przepraszamy za kłopoty." best regards Microsoft WinXP... heh


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Tak jak mowi nospor: wczesniej zadeklarowales $_SESSION['LibrariesON'] jako stringa (mialem juz ten problem),

daj
  1. <?php
  2. var_dump( $_SESSION['LibrariesON'] ); // <<<<<<<<<<<<<<<< to sie przekonasz
  3. $_SESSION['LibrariesON'][] = $lib_name; // <--- 1. błąd
  4. ?>


--------------------
Nie lubię jednorożców.
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 Aktualny czas: 22.08.2025 - 10:07