计算多维数组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))提醒注意
没有阅读该部分。。。我猜这是删除的结果。。。但还是要谢谢;-)
<?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