这里我有一个数组。就是这样:
Array ( Array (
'name' => 'bmw',
'id' => 1
), Array (
'name' => 'toyota',
'id' => 1
),Array (
'name' => 'tata',
'id' => 2
),Array (
'name' => 'bajaj',
'id' => 3
),Array (
'name' => 'kawasaki',
'id' => 3
), Array (
'name' => 'tvs',
'id' => 3
),Array (
'name' => 'mitsubishi',
'id' => 2
)
);
以及接下来应该是什么代码给我结果为id 1 => 2项,id 2 => 2项和id 3 => 3项?
我试过array_count_values()
但它对我没用。
答案 0 :(得分:0)
根据文档array_count_values
仅适用于字符串和整数。您可以使用它,但首先应该使用ID提取列。从PHP 5.5开始,它非常简单,只需调用一个名为array_column
的函数。
$list = array ( Array (
'name' => 'bmw',
'id' => 1
), Array (
'name' => 'toyota',
'id' => 1
),Array (
'name' => 'tata',
'id' => 2
),Array (
'name' => 'bajaj',
'id' => 3
),Array (
'name' => 'kawasaki',
'id' => 3
), Array (
'name' => 'tvs',
'id' => 3
),Array (
'name' => 'mitsubishi',
'id' => 2
)
);
$results = array_count_values(array_column($list, 'id'));
答案 1 :(得分:0)
也许有一个更好的解决方案,但这应该有用。
假设您的数组已保存在$arr
。
$countItemsById = [];
foreach( $arr as $data ){
$countItemsById[ $data['id'] ]++;
}
此代码执行以下操作:
首先,它正在创建一个新的数组$countItemsById
。
之后,它循环通过现有数组,并将具有id值的index (key)
的新数组值增加1。
之后,$countItemsById
将如下所示:
Array (1 => 2, 2 => 2, 3 => 3)
答案 2 :(得分:0)
循环你的数组,计算每个id的occerence。
<?php
$list = array ( Array (
'name' => 'bmw',
'id' => 1
), Array (
'name' => 'toyota',
'id' => 1
),Array (
'name' => 'tata',
'id' => 2
),Array (
'name' => 'bajaj',
'id' => 3
),Array (
'name' => 'kawasaki',
'id' => 3
), Array (
'name' => 'tvs',
'id' => 3
),Array (
'name' => 'mitsubishi',
'id' => 2
)
);
$results = [];
array_walk($list, function($v) use(&$results){
$results[$v['id']]++;
});
var_dump($results);
输出:
array(3) {
[1]=>
int(2)
[2]=>
int(2)
[3]=>
int(3)
}