我有一系列像这样的车。
Array
(
[2] => Car Object
(
[userId] => 3
[value] => 0
)
[58] => Car Object
(
[userId] => 2
[value] => 0
)
[64] => Car Object
(
[userId] => 2
[value] => 0
)
)
我遍历一组用户,并希望知道每个userId出现在cars数组中的次数。数组键是动态数字。每次循环通过用户阵列时,是否需要遍历cars数组?似乎有很多循环,我怀疑有更好的解决方案可用:)
提前致谢
更新: 实际上,我想出了一个似乎有用的解决方案。可能不漂亮。评论赞赏
$countArray = array();
foreach($cars as $car) {
if(!$countArray[$car->userId()]) $countArray[$car->userId()] == 0;
$countArray[$car->userId()]++;
}
print_r($ countArray)给了我
Array ( [94] => 33 [84] => 15 [88] => 53 [80] => 69 [83] => 14 [93] => 3 [76] => 69 [86] => 51 [82] => 77 [87] => 20 [112] => 12 [115] => 16 [114] => 10 [113] => 2 [77] => 1 )
似乎是正确的
答案 0 :(得分:5)
array_count_values( array_map(function($v) { return $v->userId; }, $array) );
结果
Array
(
[3] => 1
[2] => 2
)
答案 1 :(得分:0)
您可以将计数保留在User对象中。每次添加汽车时,都会增加相应用户的计数。每次拆卸汽车时,减少计数。这样会更快,但更容易出错 - 如果你忘记在某个时刻增加或减少计数,你的数据就会出错。