2016-12-08 4 views
0

PHPにはあまり知識がありません。foreachループで条件が成立した場合にPHPが適用されます

私はここに が私のforeachのコードで、データベースからデータを取得するためにPHPでデータベースクエリとforeachループを作成しました:

if($user->id != 0) 
{ 
    foreach ($results as $result) { 
     $leftday = $result->dayleft; 
     $subsexp = "-"; 

     if(strpos($leftday, $subsexp) !== false) { 
      echo "Subscription Expired<br>"; 
     } else { 
      echo "Subscription Active<br>"; 
     } 
    } 

} 

ここで期待通りの結果:

  • 購読を
  • 期限切れ
  • サブスクリプションが失効しました
  • サブスクリプションアクティブ
  • サブスクリプションアクティブ

しかし、「サブスクリプションアクティブ」がない場合、「サブスクリプション期限切れ」テキストを1つだけ表示するにはどうすればよいですか?すべてのサブスクリプションが期限切れになったときに、「Subscription Expired」テキストが4回表示されます。

+0

期限切れgitのでしょうか?あなたは合計でいくつのレコードを持っていますか? – Ionut

+0

固定されていません。購入した製品に基づいています。注:すべての製品はサブスクリプションベースです。 – Sifur

+0

あなたのレコードをどのように表示しますか?そのサブスクリプション値のみをデータベースから表示しますか?あなたの質問は少し不明なようですが、私はあなたが達成しようとしていることを理解していません。 – Ionut

答えて

0

何を意味することは

であれば、(期限切れ/アクティブ)結果を格納する配列を使用し、「すべてのサブスクリプションの有効期限が切れているときに一度だけメッセージを表示します」。すべての結果を格納したら、配列を処理することができます(すべてが期限切れの場合はこれを行います。 あなたが今そうであるようにすぐにresutlsをエコーし​​た場合、結果を保存せずに、あなたは、それらに何か行動することはできません:あなたがのために期限切れとActive のための別のための2つのフラグ変数1を設定することができ

<?php 

$results = []; 
$results['active'] = 0; 
$results['expired'] = 0; 
if($user->id != 0) 
{ 
    foreach ($results as $result) { 
     $leftday = $result->dayleft; 
     $subsexp = "-"; 

     if(strpos($leftday, $subsexp) !== false) { 
      $results['expired']++; 
     } else { 
      $results['active']++; 
     } 
    } 

} //all expired 
if(0 == $results['active']){ 
    //do something 
} 
+0

これはエラーを示しています: "通知:非オブジェクトのプロパティを取得しようとしています...(行$ leftday = $ result-> dayleft;)" – Sifur

+0

データベース結果に$ results varを使用しました。 "" "" $ results = $ db - > loadObjectList(); " – Sifur

+0

ありがとう、あなたの考えが働く、私はちょうど配列のvar名を変更しました。 – Sifur

0

を各ループはアクティブになり、期限切れになります(アクティブ=アクティブ+ 1) (期限切れ=期限切れ+ 1)。あなたはすべてのアクティブなだけデータベースからの総期限切れに集計結果を比較.AT両方が等しい場合のみ、1つのサブスクリプションを表示することができ期限切れあなたは `購読Expired`を持っていますどのように多くのレコード

$TotalData=count($results); 
    $active=0; 
    $Expired=0; 
     foreach($results as $val) 
     { 
     if() 
     { 
     $active=$active+1; 
     } 
     else 
     { 
     $Expired =$Expired+1; 
     } 
     } 

    if($Expired==$TotalData) 
    { 
    echo "Subscription Expired"; 

    } 
関連する問題