2017-08-31 11 views
0

要するに、category_id、product_id、およびアクティブなアクティビティタグからダウンロードしています。アイデアは、特定のcategory_idに割り当てられたすべての製品が0の値を持つように、エコー "空"を表示し、そうでない場合は "製品が含まれていますが、foreachループは代わりにプロダクトIDを通過し、empty + category_idを1回、 〜によって$ statusと表示されます。多くのエコー、アクティブなレコードの数。foreachでif結果を複製する

クエリは正常です - 私は配列に対して論理演算を実行すべきではないことを知っていますが、データベースは出力がないように構造化されています。

$result = array(); 

      foreach ($products as $detail) { 

       $cid = $detail['category_id']; 
       $pid = $detail['product_id']; 
       $status = $detail['active']; 
       $result[$cid][$pid] = $status; 

       $multiplier = $result[$cid][$pid]; 
       $counter = count($result[$cid]); 
       $multiplier2 = 1; 


       $multiplier = $multiplier * $multiplier2; 
       echo '$status: ' .$multiplier. " | "; 

       if ($multiplier == 0) { 
        echo '$cid: '.$cid.' | empty <br />'; 
       } else { 
        echo '$cid: '.$cid.' | products contains <br />'; 
       } 

      } 

重複の原因が、私はこのコード

Array 
(
    [0] => Array 
     (
      [product_id] => 1 
      [0] => 1 
      [category_id] => 221 
      [1] => 221 
      [active] => 0 
      [2] => 0 
     ) 

    [1] => Array 
     (
      [product_id] => 2 
      [0] => 2 
      [category_id] => 221 
      [1] => 221 
      [active] => 0 
      [2] => 0 
     ) 
) 

$結果配列

Array 
(
    [221] => Array 
     (
      [1] => 0 
      [2] => 0 
     ) 
) 

@EDIT

現在、関数内のコードを変更する方法がわかりませんこのようなものを返します

enter image description here

そして、この配列に基づいて、それはのようなものでなければなりません - あなたは1437年には=> 1のでカテゴリは、あなたがしようとしているようですね

enter image description here

+1

あなたは自分がやっていることと達成したいことを説明してください。現在出力されているデータとその外観を表示する – IsThisJavascript

+0

私は十分な情報をいくつか追加しましたか? – sauero

+0

現在の出力になるサンプル入力配列を提供できますか? – mickmackusa

答えて

0

を空にされていない持って見ることができるように散らばったリストから何が空であるか分からない(それはあなたがより良いクエリーを行うことができるかもしれないように思える)。この繰り返しがフィルタに役立つかどうかを確認してください。

function getCategoryActivity($products) 
    { 
     $store = array(); 
     foreach($products as $detail) { 
      $cid = $detail['category_id']; 
      $pid = $detail['product_id']; 
      # If the cid is not already stored, store it 
      if(!isset($store[$cid])) 
       $store[$cid] = $detail['active']; 
      else { 
       # If it's already set to active, ignore it 
       if(!empty($store[$cid])) 
        continue; 
       else 
        # Store it if not currently active 
        $store[$cid] = $detail['active']; 
      } 
     } 
     # Send back the filtered array 
     return $store; 
    } 
# Fetch the filtered array 
$sorted = getCategoryActivity($products); 

$sortedあなたにそれらではなく、それらの活動を持っている今のカテゴリのリストを与える必要があります。 array_map()または別のforeach()echoを使用してもう一度繰り返します。あなたがその乗数の部分で何をしようとしているのか分かりませんので無視しました。

関連する問題