2017-08-10 9 views
0

点火状態の変化をチェックするロジックが必要です。イグニッションがオンであれば、その配列を開始配列にプッシュし、状態がオフに変わると、 1つの開始配列インデックスを考慮して、配列インデックスを1回のトリップとして停止することができます。私は、問題があるロジックを持っていたが、これは全ての開始値をプッシュし、すべてのストップ値Iが唯一の状態変化の指標が必要forループ内で2つのアレイを形成して点火状態の変化状態を確認する

$isIgniOn = false; $startArray = array(); $stopArray = array(); 

    for ($i = 0; $i < count($reportData); $i++) { 

     if ($reportData[$i]['ignition_status'] == 1) { 
      $startArray[] = $i; 
      $isIgniOn = true; 

     } else { 
      if ($isIgniOn) { 
       $isIgniOn = false; 
       $stopArray[] = $i; 
      } else { 
       $startArray[] = $i; 
      } 

     } 

    } 

答えて

0

、あなたが実際に状態が変化したかどうかをチェックされていないし、いくつかを追加する必要がありますあなたのプログラムの余分なロジック:

$isIgniOn = false; $startArray = array(); $stopArray = array(); 

for ($i = 0; $i < count($reportData); $i++) { 

    if ($reportData[$i]['ignition_status'] == 1 && !$isIgniOn) { 
     $startArray[] = $i; 
     $isIgniOn = true; 

    } elseif ($reportData[$i]['ignition_status'] == 0 && $isIgniOn) { 
     { 
      $isIgniOn = false; 
      $stopArray[] = $i; 
     } 

    } 

} 
+0

おかげと同じに$isIgniOnを変更することで、少しそれを単純化してきました – Prashanth

0

あなたは遠く離れていませんが、変更が行われたときに確認する必要があります。私はあなたの$reportData値(0と1のようにではなく、真と偽)作品

$isIgniOn = 0; 
$startArray = array(); 
$stopArray = array(); 

for ($i = 0; $i < count($reportData); $i++) { 
    $newState = $reportData[ $i ]['ignition_status']; 
    if ($newState != $isIgniOn){ 
     if ($newState == 1) { 
      $startArray[] = $i; 
     } 
     else { 
      $stopArray[] = $i; 
     } 
     $isIgniOn = $newState; 
    } 
} 
関連する問題