计算多维数组php的键数
也许标题不能解释我的问题,请看我的例子: 我有一个多维数组,如下所示:计算多维数组php的键数,php,arrays,Php,Arrays,也许标题不能解释我的问题,请看我的例子: 我有一个多维数组,如下所示: Array ( [0] => Array ( [name] => 'A' [ec_dest_name] => 楽天testuser_998 ), [1] => Array ( [name]
Array
(
[0] => Array
(
[name] => 'A'
[ec_dest_name] => 楽天testuser_998
),
[1] => Array
(
[name] => 'A'
[ec_dest_name] => 楽天testuser_998
),
[2] => Array
(
[name] => 'B'
[ec_dest_name] => 楽天testuser_998
),
[3] => Array
(
[name] => 'C'
[ec_dest_name] => 楽天testuser_998
)
)
我想按键name
对元素进行计数,这意味着我想返回如下数组:
Array ('A' => 2 , 'B'=>1, 'C'=>1)
任何快速实现这一点的方法,我都可以循环数组和计数,但我认为这不是一个好主意
在高级中感谢您可以将
数组计数值
和数组列
一起使用-
$counts = array_count_values(array_column($your_array, 'name'));
输出
array(3) {
["A"]=>
int(2)
["B"]=>
int(1)
["C"]=>
int(1)
}
如Mark Baker为较旧的PHP版本建议的那样-
$counts = array_count_values(
array_map(function($value) {
return $value['name'];
}, $your_array)
);
您也可以使用如下所示的2个循环来实现这一点。您也可以对此进行测试
看起来不错,但是数组_列
适用于php>=5.5。我用的是5.3,我喜欢这个短方法,因为它不起作用。但我建议升级。PHP 7已经发布。:)如果您绝对必须运行一个古老的、不受支持的PHP版本,那么$counts=array\u count\u values(array\u map(function($value){return$value['name'];},$your\u array))但是你真的应该升级你的PHPThank Mark版本,它对我有用!。我有理由不能立即升级,所以暂时需要一个支持旧版本的解决方案。太好了@MarkBakerop明确指出:我可以循环数组和计数,但我认为这不是一个好方法idea@fantaghirocco感谢您的提醒注意
没有阅读该部分。。。我猜这是删除的结果。。。但还是要谢谢;-)
<?php
$arrSections = array();
$arrCounts = array();
$arrMain = array(
array(
'name' => "A",
'ec_dest_name' => "楽天testuser_998",
),
array(
'name' => "A",
'ec_dest_name' => "楽天testuser_998",
),
array(
'name' => "B",
'ec_dest_name' => "楽天testuser_998",
),
array(
'name' => "C",
'ec_dest_name' => "楽天testuser_998",
),
);
// BUNDLE ARRAYS WITH SIMILAR name INTO ONE GROUP
// THUS CREATING A MULTI-DIMENSIONAL ARRAY WHOSE MAIN KEYS CORRESPOND TO
// THE name OF THE MEMBER ARRAYS IN THE GROUP.
foreach($arrMain as $iKey=>$subMain){
$name = $subMain['name'];
if(!array_key_exists($name, $arrSections)) {
$arrSections[$name] = array();
}
$arrSections[$name][] = $subMain;
}
// FETCH THE COUNTS OF EACH GROUP AND MAKE AN ARRAY OUT OF IT...
foreach($arrSections as $k=>$v){
$arrCounts[$k] = count($v);
}
var_dump($arrCounts);
//OUTPUTS::
array (size=3)
'A' => int 2
'B' => int 1
'C' => int 1