Php 如何在多维数组中计算相同的值?
这里有一个数组。就是这样:Php 如何在多维数组中计算相同的值?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,这里有一个数组。就是这样: Array ( Array ( 'name' => 'bmw', 'id' => 1 ), Array ( 'name' => 'toyota', 'id' => 1 ),Array ( 'name' => 'tata', 'id' => 2 ),Array ( 'name' => 'bajaj', 'id' => 3 ),Ar
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
)
);
下一步应该是什么代码才能给出ID1=>2项、ID2=>2项和ID3=>3项的结果?
我尝试了
array\u count\u values()。可以使用它,但首先应该提取一个ID为的列。对于PHP5.5来说,这非常简单,只需调用一个名为的函数
也许有更好的解决办法,但这应该行得通
假设数组保存在$arr
中
$countItemsById = [];
foreach( $arr as $data ){
$countItemsById[ $data['id'] ]++;
}
此代码执行以下操作:
首先,它创建一个新数组$countitemsbyd
。
之后,它在现有数组中循环,并将具有id值的索引(键)
的新数组中的值增加1
之后,$countItemsById
将如下所示:
Array (1 => 2, 2 => 2, 3 => 3)
循环数组,以计算每个id的发生率
<?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);
<?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)
}