计算具有特定值的多维数组键

时间:2016-06-20 15:08:38

标签: php arrays sorting multidimensional-array count

我有一个数组,我需要计算具有特定值的键,这被证明是一场噩梦。

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
    ) )

将动态生成数组,以便在阵列中显示相同的数组。

我想计算相同规则列表出现的次数,它将如下所示:

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

更新:我需要计算ruleid = 2或ruleid = 1

的次数

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我通过循环和计算规则在数组中出现的次数来解决这个问题。

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;
                    }
                }
            }
        }

循环检查ruleid已经通过了我已计入$ count变量的所有规则。