Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [] operator not supported
Forum PHP.pl > Forum > PHP
ennics
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... ?
nospor
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]
ennics
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'][]
nospor
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();
ennics
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
dr_bonzo
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. ?>
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.