2016-08-12 11 views
1

現在、私のイベントグループ内のイベントに空きがあるか売り切れているかどうかにテキストを適用しようとしています。配列が正しい値を返していない

Myループは、イベントグループ内の各イベントを調べて、それらが売り切れたか、特定のイベントごとに使用可能かどうかを返します。私の問題は、それぞれのイベントを調べるのではなく、両方のイベントで同じ値を返すだけで、間違った値を返すことです。

これは配列にこれらを追加し、それぞれを暗黙に暗にしますが、2番目の値は常に間違っています。何か案は?

2つ目のイベントは、それが容量値のヒットしている場合でも、それはまだのように利用できる示し

public function getAreEventsAvailableStringMultiple() { 
    $availability = null; 
    foreach ($this->events as $event) { 
     $availability[] = $this->getAreEventsAvailable() ? 'Spaces still available' : 'Sold Out'; 
    } 
    return implode(' <br/> ', $availability); 
} 

その他の機能

public function getAreEventsAvailable() { 
     foreach ($this->events as $event) { 
      if ($event->getRemainingCapacity() > 0) { 
       return true; 
      } 
     } 
     return false; 
    } 
+0

各繰り返しで同じ関数を呼び出す '$ this-> getAreEventsAvailable()'? $ this-> getAreEventsAvailable($ event) ' – Thamaraiselvam

答えて

2

おそらく、イベントオブジェクトの配列である($this->eventsを反復処理しています)、現在のオブジェクトを意味する$thisの可用性をチェックします。 $this->eventsは、オブジェクトの配列がある

場合は、この作業を行う必要があります。

foreach ($this->events as $event) { 
     $availability[] = $event->getAreEventsAvailable() ? 'Spaces still available' : 'Sold Out'; 
    } 

をごEventオブジェクトがgetAreEventsAvailable()メソッドを持っていると仮定します。すべてのイベントの$this->getAreEventsAvailable()リターンの可用性は、foreachループの必要がない場合は

、ちょうど$availabilityに結果を割り当てます。

$availability = $this->getAreEventsAvailable(); 

EDITを: あなたgetAreEventsAvailable()は次のようになります。

public function getAreEventsAvailable() { 
    $availability = []; 

    foreach ($this->events as $event) { 
     if ($event->getRemainingCapacity() > 0) { 
      $availability[] = true; 
     } else { 
      $availability[] = false; 
     } 
    } 

    return $availability; 
} 

、次にgetAreEventsAvailableStringMultiple()関数内:

public function getAreEventsAvailableStringMultiple() { 
    $availability = []; 

    foreach ($this->getAreEventsAvailable() as $eventAvailable) { 
     $availability[] = $eventAvailable ? 'Spaces still available' : 'Sold Out'; 
    } 
    return implode(' <br/> ', $availability); 
} 

これは最も洗練された解決策ではありませんが、うまくいくはずです。

+0

私は他の関数で質問を更新しました。あなたの提案に1つの結果しか返しません。 – DevAL

+0

'return'は"関数を終了してこの値を返す "ことを意味します。ループの最初の実行後、値を返して関数を終了します。私は自分の答えを更新しました。 –

+0

素晴らしい声援。 – DevAL

関連する問題