2016-06-20 25 views
-1

配列があり、特定の値でキーを数える必要があります。これは悪夢であることが証明されています。特定の値を持つ多次元配列キーをカウントする

Array([0] => Array 
    (
     [0] => 1 
     [ruleid] => 1 
     [1] => Test Outbound Life 1 
     [rule_name] => Test Outbound Life 1 
     [2] => Life Insurance 
     [product_type] => Life Insurance 
     [3] => 1 
     [status] => 1 
     [4] => 1000 
     [priority] => 1000 
     [5] => 100 
     [quantity] => 100 
     [6] => 1-2-3-4-5-6-7- 
     [dayofweek] => 1-2-3-4-5-6-7- 
     [7] => 2 
     [income] => 2 
     [8] => external/arc.php 
     [integrationfile] => external/arc.php 
     [9] => 1 
     [partnerid] => 1 
    ) 

[1] => Array 
    (
     [0] => 2 
     [ruleid] => 2 
     [1] => Test Outbound Life 2 
     [rule_name] => Test Outbound Life 2 
     [2] => Life Insurance 
     [product_type] => Life Insurance 
     [3] => 1 
     [status] => 1 
     [4] => 800 
     [priority] => 800 
     [5] => 100 
     [quantity] => 100 
     [6] => 1-2-3-4-5-6-7- 
     [dayofweek] => 1-2-3-4-5-6-7- 
     [7] => 2 
     [income] => 2 
     [8] => test.php 
     [integrationfile] => test.php 
     [9] => 1 
     [partnerid] => 1 
    )) 

アレイは動的に生成され、同じアレイがアレイに表示されます。私は同じruleidが表示された回数をカウントする

が、それは次のようになりますです:

Array{ 
    [1] => 1 
    [2] => 1 
} 

アップデート:私は= 2または何回ruleid = 1

をruleid回数をカウントする必要があります
+1

'array_count_values(array_column($ yourArray、 'ruleid'))'はそれを行うべきです – billyonecan

答えて

0

したがって、ruleidがアレイ内に表示される時間の数を数えたいとします。 この配列を$countとしましょう。これが私のやり方です。

$count = array(); 
foreach($arrays as $array) { // $arrays is your big ass array containing arrays 
    // increment the value with the key corresponding to ruleid (improved by JustOnUnderMillions) 
    $count[$array['ruleid']] = isset($count[$array['ruleid']]) ? ($count[$array['ruleid']] + 1) : 1; 
} 
print_r(count); // should give you what you're looking for 
+2

$ count [$ array ['ruleid']] = isset($ count [$ array ['ruleid']]) ? $ count [$ array ['ruleid']] + 1:1;キーが 'NULL'に初めて設定されたPHP 5.6 - これを無視してください! – JustOnUnderMillions

+0

申し訳ありませんが、ここで見逃しています.......忘れてください – JustOnUnderMillions

+0

あなたは絶対に正しいです。 – Dorian

0

は私がループしてruleidが配列に表示された回数をカウントすることにより、それを働いています。

foreach ($count as $key => $value) { 
      $c = 0;  
      //check that outbound has passed all rules 
      foreach ($out as $k => $v) { 
       if ($v['ruleid']==$key) { 
        $c +=1; 
       } 
      } 
      if ($c==$value) { 
       //add valid outbound to array 
       foreach ($out as $k => $v) { 
        if ($v['ruleid']==$key) { 
         $valid[$key] = $v; 
        } 
       } 
      } 
     } 

ループは、すでに$ count変数でカウントされたすべてのルールを通過したかどうかをチェックします。

関連する問題