За последние 24 часа нас посетили 119954 программиста и 7977 роботов. Сейчас ищут 1724 программиста ...

Запись в массив

Тема в разделе "PHP для новичков", создана пользователем JeK@, 15 апр 2009.

  1. JeK@

    JeK@ Активный пользователь

    С нами с:
    11 апр 2009
    Сообщения:
    32
    Симпатии:
    0
    Не получается записать в массив $_SESSION['list'][] первое значение переменной.По условию как только появляется переменная $_GET['list'],она должна записаться в массив,но когда $_GET['list'] появляется первый раз,он выдаёт ошибку на странице.
    PHP:
    1. 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:
    1. <?
    2. if(isset($_GET['list'])) {
    3. $li=$_GET['list'];
    4. if (in_array("$li",$_SESSION['id']))   {unset($_GET['list']);}
    5. else{
    6. $_SESSION['list'][] =$_GET['list'];
    7.  
    8. }
    9.  
    10. for($i=0;$i<count($_SESSION['list']);$i++){   ........
    Как правильно сделать,чтобы она сразу записывалась.
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.982
    Симпатии:
    2
    PHP:
    1. if (in_array("$li",$_SESSION['id']))  {unset($_GET['list']);}
    Это вообще что такое? :)

    Смотрите сюда:
    Код (Text):
    1. $li=$_GET['list'];
    $li уже не массив, вы присваеваете ему значение, содержащееся в массиве $_GET по индексу list.
    При этом в $li содержится строка, а не массив.

    Дальше:
    Код (Text):
    1. in_array("$li",$_SESSION['id'])
    Вы передаете в качестве первого аргумента строку, а нужно массив. Отсюда получаете ошибку.
    Во-вторых: а нафига вы $li в кавычки засунули? :)
     
  3. JeK@

    JeK@ Активный пользователь

    С нами с:
    11 апр 2009
    Сообщения:
    32
    Симпатии:
    0
    Не надо смеятся,все мы начинали...Попробую исправить,тогда отпишусь.Спасибо.
     
  4. JeK@

    JeK@ Активный пользователь

    С нами с:
    11 апр 2009
    Сообщения:
    32
    Симпатии:
    0
    Теперь он стал выдавать ошибку,даже когда в массиве много значений!!!
    Должно так получиться
    PHP:
    1. if(isset($_GET['list'])) {
    2. $li=$_GET['list'];
    3. if (in_array($_SESSION['id'],$li))   {unset($_GET['list']);}
    4. else{
    5. $_SESSION['list'][] =$_GET['list'];
    6.  
    7. }
    8.  
    9. for($i=0;$i<count($_SESSION['list']);$i++){  
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.982
    Симпатии:
    2
    Хватайте:

    Код (Text):
    1. in_array($_GET['list'], $_SESSION['id']);
    И не нужно никаких присваиваний лишних.
    А наоборот не получится - учтите, так как $_GET['list'] - это не массив, а уже значение.
    По аналогии стройте другие решения.