Не получается записать в массив $_SESSION['list'][] первое значение переменной.По условию как только появляется переменная $_GET['list'],она должна записаться в массив,но когда $_GET['list'] появляется первый раз,он выдаёт ошибку на странице. PHP: Warning: in_array() [function.in-array]: Wrong datatype for second argument in Y:\home\localhost\www\ploshka\www\blocks\zakaz\list2.php on line 28 А это сам код дабавления... PHP: <? if(isset($_GET['list'])) { $li=$_GET['list']; if (in_array("$li",$_SESSION['id'])) {unset($_GET['list']);} else{ $_SESSION['list'][] =$_GET['list']; } for($i=0;$i<count($_SESSION['list']);$i++){ ........ Как правильно сделать,чтобы она сразу записывалась.
PHP: if (in_array("$li",$_SESSION['id'])) {unset($_GET['list']);} Это вообще что такое? Смотрите сюда: Код (Text): $li=$_GET['list']; $li уже не массив, вы присваеваете ему значение, содержащееся в массиве $_GET по индексу list. При этом в $li содержится строка, а не массив. Дальше: Код (Text): in_array("$li",$_SESSION['id']) Вы передаете в качестве первого аргумента строку, а нужно массив. Отсюда получаете ошибку. Во-вторых: а нафига вы $li в кавычки засунули?
Теперь он стал выдавать ошибку,даже когда в массиве много значений!!! Должно так получиться PHP: if(isset($_GET['list'])) { $li=$_GET['list']; if (in_array($_SESSION['id'],$li)) {unset($_GET['list']);} else{ $_SESSION['list'][] =$_GET['list']; } for($i=0;$i<count($_SESSION['list']);$i++){
Хватайте: Код (Text): in_array($_GET['list'], $_SESSION['id']); И не нужно никаких присваиваний лишних. А наоборот не получится - учтите, так как $_GET['list'] - это не массив, а уже значение. По аналогии стройте другие решения.