Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在多维数组中计算相同的值?_Php_Arrays_Multidimensional Array - Fatal编程技术网

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)
}