Возникает ошибка при добавлении в сессию,когда делал на Apach у себя всё нормально,а как только разместил на сервере ,то стал выдавать ошибку PHP: Fatal error: [] operator not supported for strings in /home/us2891/ploshka.ru/www/blocks/zakaz/list2.php on line 53 выдаёт ошибку в строке- PHP: $_SESSION['list'][] =$_GET['list']; ,что это может быть.
Ну ошибка как бы говорит нам: Т.е. либо нужно сделать $_SESSION['list'] = array($_GET['list']); Либо $_SESSION['list'] = $_GET['list']
Оба способа не подействовали,в первом случае он вообще не выводит инфу с базы,а во втором сразу выдаёт ошибку. Забыл сказать,что ошибка возникает только тогда,когда в массив добавляется второе значение,первый раз он всё хорошо добавляет,а второй раз выдаёт ошибку и не выводит первое добавленное значение.
На сервере какая версия РНР интерпритатора стоит? Не РНР 3, случайно? У вас индекс массива трактуется как строка, ЕСЛИ Я НЕ ОШИБАЮСЬ, возможность присваивать массиву какое-то значение, без явного указания индекса, было невозможным в 3 версии РНР.
Cron явно указывать нельзя,он мне этот элемент вечно перезаписывать будет,а мне надо,чтобы добавлял!Apple версия 5.2.4,по идее всё должно работать. Есть ещё варианты?Буду благодарен за совет.
PHP: <?php $_SESSION['list'][] =$_GET['list']; ?> все равно что PHP: <?php $_SESSION ['list'] [count ($_SESSION ['list'])] = $_GET ['list']; ?> В JAVA оператор [] вообще не поддерживается, и там делать нужно так же (используя атрибут класса массива length).
T-Mon спасибо. Правда теперь возникла ошибка в строке PHP: $_SESSION['list']=array_values($_SESSION['list']); сама ошибка PHP: Warning: array_values() [function.array-values]: The argument should be an array in /home/us2891/ploshka.ru/www/blocks/zakaz/list2.php on line 56 он говорит,что в массиве должно быть множество,что это значит.Но всё это происходит при добавлении второго элементы,первый добавляется и выводиться отлично,но потом всё равно не сохраняется.
вот код: PHP: if(isset($_GET['list'])) { //если сущ.переменная list,тогда поехали; if(1>count($_SESSION['id'])){$_SESSION['id'][]=0;} //проверяем естьли в массиве значения,если нет то присваиваем 0; if (in_array($_GET['list'],$_SESSION['id'])) {unset($_GET['list']);} //смотрим есть ли в массиве id переменная list,если есть,то удаляем её; else{ $_SESSION['list']['$i']=$_GET['list']; //если в массиве id нет пременной list, то пресваиваем list cессии list; } if(isset($_GET['del'])) {$del=$_GET['del']; unset($_SESSION['list'][$del],$_SESSION['id'][$del],$_SESSION['title'][$del],$_SESSION['kol'][$del],$_SESSION['info'][$del]);} //это отдельная тема с удалением переменных; $_SESSION['list'] = array_values($_SESSION['list']); // выбрать все значения необходимо,если было совершенно удаление,а то он удалённый элемент выводит пустой строкой,а так нет; for($i=0;$i<count($_SESSION['list']);$i++){ // пошёл цикл; if($i==0) {$list=1;} $b=$i+1; $list=$_SESSION['list'][$i]; $result=mysql_query ("SELECT * FROM `cat` WHERE id='$list'"); $myrow=mysql_fetch_array($result); ..............................
Cron это исправил,но не помогло!Должно вообще быть вот так: PHP: $_SESSION ['list'] [] = $_GET ['list']; ,но так выдаёт ошибку. P.S.У меня на apach всё и так работает.
Вот написал вам по быстрому такой код. Разберитесь внимательно в нем. Мы проверяем явно массив ли это и если нет - делаем его таковым. Ещё не понятно, откуда взялась переменная $i, но так как полностью ваш код мы не видели, будем считать, что она есть и нужна. Поэтому в коде она оставлена. Внимательно проследите за логикой блоков if, следующих в моём примере: PHP: <?php if(isset($_GET['list'])){ if(isset($_SESSION['id'])){ if(!is_array($_SESSION['id'])){ $_SESSION['id'] = array(); }else{ if(in_array($_GET['list'], $_SESSION['id'])){ unset($_GET['list']); }else{ $_SESSION['list'][$i] = $_GET['list']; } } } } ?>
Apple всё понял,хороший вариант,так тоже можно,надо попробовать.Спасибо. Проблема разрешилась сама собой,оказалось дело было в записи в сессию.Она почемуто не записывала и поэтому была ошибка PHP: Warning: array_values() [function.array-values]: The argument should be an array in /home/us2891/ploshka.ru/www/blocks/zakaz/list2.php on line 56 Я случаем сделал удаление одной переменной в другои файле,который следил за переменными и подключением страниц и всё стало ОК.А вот почему выводилась ошибка непонятно,но она перестала всплывать. PHP: Fatal error: [] operator not supported for strings in /home/us2891/ploshka.ru/www/blocks/zakaz/list2.php on line 53 Всем спасибо.Еще пару вопросов есть,но это уже в другой теме будет.
Ошибка выводилась потому что не можно делать так: PHP: <?php $a = 'aaaa'; $a [] = 'a'; //$a .= 'a'; ?> Интерпретатор пытался получить доступ к новому элементу массива, который на самом деле не был массивом.