2013-12-24 2 views
0

Пожалуйста, помогите! Я слишком долго смотрел на это. У меня есть свойство объекта, представляющего собой массив объектов. Я хочу передать объект методу родительского объекта и выполнить поиск через это свойство массива для соответствия, и если он найден, верните индекс. В противном случае мне нужно вернуть -1. По какой-то причине это не повторение. Если я выхожу из того, что должно быть свойством $ order-> product (где указатель указывает во время цикла), он остается неизменным. Я сбросил массив, и я знаю, что он содержит разные значения. Я могу показать вам большой дамп var, но я решил, что сначала спрошу, есть ли простая ошибка или что-то еще, что очевидно для вас, что я пропустил.php foreach итерация по массиву свойств объекта, не увеличивающая значение

public function getItemIndex($prod) { 
    if (isset($this->orders)){ 
     foreach($this->orders as $key => $order) { 
     if ($order->product == $prod) { //if I echo this $order->product to the screen, it is unchanging 
      return $key; 
     } else { return -1; } 
     } 
    } 
    else { 
     return -1; 
    } 
    } 

Если у кого есть какие-либо идеи, я открыт для обсуждения и публикации дополнительной информации по мере необходимости. Спасибо за ваше время.

+1

Можете ли вы показать '$ this-> orders' (или его часть)? – Popnoodles

+1

in_array просто возвращает логическое значение. Я добавлю var_dump, одну секунду ... – eightArmCode

+1

как в 'if (! In_array ((array) $ this-> orders, $ prod)) return -1;' EDIT, Oh you want the key. – Popnoodles

ответ

5

Вы ВСЕГДА return, используя значение на первой итерации, либо $key, либо -1. Попробуйте удалить заявление else, которое у вас есть. Это позволит вам полностью перебрать весь массив.

public function getItemIndex($prod) { 
    if (isset($this->orders)){ 
     foreach($this->orders as $key => $order) { 
      if ($order->product == $prod) { //if I echo this $order->product to the screen, it is unchanging 
       return $key; 
      } 
     } 
    } 

    return -1; 
} 

Это только return -1 раз он итерацию над всем и не нашел ничего, чтобы соответствовать. Он найдет return $key, если найдет совпадение.

+0

Не должно быть 'return -1;'? Кажется, вы пропустили точку с запятой. –

+0

Действительно, он исправлен. –

+0

большое вам спасибо! – eightArmCode