2016-06-27 2 views
1

Я озадачен проблемой в моем коде и надеюсь, что кто-то еще может помочь мне пролить свет на то, почему мой цикл пропускает первый элемент (array[0]) массива.для цикла, не обрабатывающего первый элемент массива

Кодекс

foreach ($a as $key => $val) { 

     for ($i=0; $i<count($val); $i++) { 
      $x = $i; //this helps me jump logical arguments without the use of else 


      // First Test 
      if (isset($val[$i+2]) && $x = $i) { 

      //Do a bunch of stuff 

        if (isset(the stuff done above)) { 
        // do other things and reset $i to jump through the array 
        $i=$i+2; 

        }     

        else { 
         unset($things); 
         unset($otherthings); 
        } 
       } 
      } 


      // Second Test 
      if (isset($val[$i+1]) && $x = $i) { 

      //Do a bunch of stuff 

        if (isset(the stuff done above)) { 
        // do other things and reset $i to jump through the array 
        $i=$i+1; 

        }     

        else { 
         unset($things); 
         unset($otherthings); 
        } 
       } 
      } 

      // Third and final test 
      if ($x = $i) { 

       //do other things 

      } 

     } 
} 

Проблема

Я не могу понять, почему, но цикл или IF заявления (я не уверен на 100%, который один) не работать через первый элемент массива [0].

Он прекрасно работает из массива [1] вперед, но даже если я испытал, что $x действительно = к $i и поэтому тест-3, по крайней мере, должно работать, цикл, кажется, бежит один цикл мимо всех IF's, а затем начните работу с массивом [1].

То, что я пытался

  • Я изменил for ($i=1; $i<$val; $i++) и это прекрасно работает (например, ничего не опускаем) с самого начала (но, конечно, не решает мою проблему, как я до сих пор отсутствует массив [0])
  • Я проверил в коде, если эхо $val[0] печатает в начале кода, и это делает
  • Я также протестировали $x = $i и они также работают

Это одна из тех проблем, которые кажутся слишком глупыми, чтобы изменить все в моем коде, но много раз искали переполнение стека и google для подобных проблем. Я не могу понять, почему.

Должно быть что-то не так, я не вижу, как я написал цикл?

ответ

6

Использовать $x == $i для проверки равенства, а не $x = $i, который является назначением.

+0

В эти моменты я благодарен, смиренен и немного смущен ... все это часть обучения;) Это сделал трюк, спасибо – Jacob

+0

@ Jacob это нормально, мы узнаем о небольших + больших ошибках. :) :) –

Смежные вопросы