2015-04-10 2 views
0

Im получает неопределенную ошибку смещения. Я знаю, почему я получаю ошибку и где она. То, что я пытаюсь решить, - это реализовать соответствующую проверку ошибок, чтобы это не происходило. Этот метод в настоящее время вызывается через ajax и, следовательно, вызывает ошибки при возврате любых строк и т. Д.Неопределенное смещение Проверка ошибок php

Ниже вызывается метод класса, его переменные устанавливаются в $ _GET.

 $id = $_GET['id']; 
     $product = $_GET['name']; 
     $price = $_GET['price']; 

     //check for existing product 
     for($i = 0; $i <= count($_SESSION['BASKET']); $i++) { 
       //if product exsits incrent by 1 
       if($_SESSION['BASKET'][$i]['id'] == $id){ 
        $_SESSION['BASKET'][$i]['amount'] = $_SESSION['BASKET'][$i]['amount'] + 1; 
        break; 
       //if doesnt exsist creat product array 
       } else { 
        $item = array('id' => $id,'amount' => 1,'product' => $product,'price' => $price);   
       } 
     } 

     if(isset($item)){ 
      //push product to session array 
      array_push($_SESSION['BASKET'], $item); 
     } 

Как вы можете увидеть чеки метод, чтобы увидеть, если в данный момент корзина содержит продукт и обновление приращения количества («количества»). У меня есть конструктор, который создает массив корзин в классе. Проблема возникает, когда $ _SESSION [ «КОРЗИНА»] называется и пуст, но до сих пор существует как в:

array (
) 

это создает и неопределенные смещение ошибки при проверке идентификатора в, если заявление, как массив технически существует, но смещение 0 - нет. Любые идеи, как я могу справиться с этим ?.

Код изменения И. сделали, что вызывает ту же ошибку

if(isset($_SESSION['BASKET'][$i]) && $_SESSION['BASKET'][$i]['id'] == $id){ 
+0

Можете ли вы попробовать использовать isset() и/или пустые, чтобы проверить правильность массива $ _SESSION ['BASKET']? if (isset () && (! empty ())) – Maximus2012

+0

, который по-прежнему запрашивает идентификатор сеанса во втором состоянии, поэтому по-прежнему предоставляет ту же ошибку –

+0

Можете ли вы обновить свой вопрос с помощью изменений кода, которые вы сделали? – Maximus2012

ответ

0

я переехал логику вне цикла и добавил переменную BOOL, я могу затем запросить, чтобы это проверить, если элемент был найден в массиве , Это позволило мне создать еще один оператор if, чтобы проверить, были ли заданы значения сеансов, а не проверка того, был ли массив создан.

 $id = $_GET['id']; 
     $product = $_GET['name']; 
     $price = $_GET['price']; 
     $exsist = false; 

     //check for existing product 
     for($i = 0; $i <= count($_SESSION['BASKET']); $i++) { 
      if(isset($_SESSION['BASKET'][$i])){ 
       //if product exsits incrent by 1 
       if(isset($_SESSION['BASKET'][$i]) && $_SESSION['BASKET'][$i]['id'] == $id){ 
        $_SESSION['BASKET'][$i]['amount'] = $_SESSION['BASKET'][$i]['amount'] + 1; 
        $exsist = true; 
        break; 
       } 
      } 
     } 

     if($exsist != true){ 
      $item = array('id' => $id,'amount' => 1,'product' => $product,'price' => $price); 
      array_push($_SESSION['BASKET'], $item);   
     } 
Смежные вопросы