php foreach迭代对象属性数组不递增值

eig*_*ode 0 php arrays foreach object-property

请帮忙!我一直盯着这看太久了.我有一个对象的属性是一个对象数组.我想将一个对象传递给父对象的方法,并在该数组属性中搜索匹配项,如果找到一个,则返回索引.否则,我需要它返回-1.出于某种原因,它不是迭代的.如果我回应出什么应该是$ order-> product属性(索引在循环期间指向的位置),它是不变的.我已经转储了数组,我知道它包含不同的值.我可以向你展示一个很大的转储,但我想我会首先询问是否有一个简单的错误或其他一些对我来说很明显的错过了.

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;
    } 
  }
Run Code Online (Sandbox Code Playgroud)

如果有人有任何想法,我愿意讨论并根据需要发布更多信息.感谢您的时间.

Jus*_*ood 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;
}
Run Code Online (Sandbox Code Playgroud)

只有return -1在迭代了所有内容并且没有找到任何匹配项后,这将是唯一的.return $key如果找到匹配,它仍然会.