php array_count_values由2个值组成

时间:2014-05-16 21:42:40

标签: php arrays

我有一个这样的数组:

array(3) { 
[0]=> array(4) { ["user_id"]=> int(1) ["date"]=> string(10) "16-05-2014" ["time"]=> string(8) "21:19:50" ["product"]=> int(70) } 
[1]=> array(4) { ["user_id"]=> int(1) ["date"]=> string(10) "16-05-2014" ["time"]=> string(8) "21:21:05" ["product"]=> int(76) } 
[2]=> array(4) { ["user_id"]=> int(1) ["date"]=> string(10) "16-05-2014" ["time"]=> string(8) "21:22:30" ["product"]=> int(70) } 
}

如何使用数组中的2批数据来使用array_count_values?

我想计算user_id = 1和product = 70

的位置

由于

2 个答案:

答案 0 :(得分:1)

使用array_reduce:

<?php
$array = array(
    array('user_id'=>1, 'product'=>70),
    array('user_id'=>2, 'product'=>70),
    array('user_id'=>3, 'product'=>70),
    array('user_id'=>1, 'product'=>55),
    array('user_id'=>1, 'product'=>70),
    );

$user_id = 1;
$product = 70;

$count = array_reduce($array,
                        function($prev, $item) use ($user_id, $product){
                            //if the two numbers match
                            if($item['user_id'] == $user_id && $item['product'] == $product){
                                //add one to the previous value
                                $prev++;
                            }
                            return $prev;
                        },
                        0);

var_dump($count);

Demo

答案 1 :(得分:1)

使用简单的foreach循环数组并计算数据匹配的位置。

<?php
//Thanks to Jonathan Kuhn
$array = array(
    array('user_id'=>1, 'product'=>70),
    array('user_id'=>2, 'product'=>70),
    array('user_id'=>3, 'product'=>70),
    array('user_id'=>1, 'product'=>55),
    array('user_id'=>1, 'product'=>70),
    );

$user_id = 1;
$product = 70;

//Actual code
$count = 0;
foreach($array as $val) {
  if($val['user_id'] == $user_id && $val['product'] == $product)
    $count++;
}

var_dump($count);
?>

最终结果与Jonathans相同,但这更清楚。

Codepad example