PHP итерация по каждому элементу массива свойств объекта без увеличения значения

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

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 ответ

Решение

Ты всегда 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 если он найдет совпадение.

Другие вопросы по тегам