我有一个这样的数组:
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
的位置由于
答案 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);
答案 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相同,但这更清楚。