0

助けてください!私はあまりにも長い間これを見つめてきました。オブジェクトの配列であるオブジェクトのプロパティがあります。オブジェクトを親オブジェクトのメソッドに渡し、その配列プロパティを検索して一致するものを探し、見つかった場合はインデックスを返します。それ以外の場合は、-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;
    } 
  }

誰かが何かアイデアを持っている場合は、必要に応じて議論し、より多くの情報を投稿します. お時間をいただきありがとうございます。

4

1 に答える 1

5

またはreturnのいずれかの最初の反復で常に値を ing しています。現在持っているステートメントを削除してみてください。これにより、配列全体を完全に反復処理できます。$key-1else

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一致するものが見つかった場合は引き続き実行されます。

于 2013-12-24T02:50:49.970 に答える