PHP二维数组如何统计,与下标,相等的值。有几个?

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => A
            [age] => 19
        )

    [1] => Array
        (
            [id] => 2
            [name] => B
            [age] => 20
        )

    [2] => Array
        (
            [id] => 3
            [name] => C
            [age] => 18
        )

    [3] => Array
        (
            [id] => 5
            [name] => D
            [age] => 18
        )

)

如何统计下标age为18的有两个

阅读 1.7k
3 个回答
<?php 
$arr=array(
        array(
                'sv_id'=>1,
                'm_id'=>1,
                'sv_question1'=>20   
            ),   
        array(
                'sv_id'=>2,
                'm_id'=>2,
                'sv_question1'=>10
        ),
        array(
                'sv_id'=>3,
                'm_id'=>1,
                'sv_question1'=>20
        ),
        array(
                'sv_id'=>4,
                'm_id'=>3,
                'sv_question1'=>20
        ),
        array(
                'sv_id'=>5,
                'm_id'=>2,
                'sv_question1'=>10
        )
    );
 
//var_dump($arr);
$ar=array();
foreach($arr as $v){
        if(empty($ar) || !in_array($v,$ar)){
            $ar[$v['m_id']][$v['sv_id']]=$v;
        }else{
            foreach($ar as $ka=>$va){
                if($ka==$v['m_id']){
                    $ar[$ka][$v['sv_id']]=$v;
                }
            }
        }
}
echo "<pre>";
var_dump($ar);

大概搜了一下还挺多的
https://www.baidu.com/s?ie=UT...

<?php

$arr = [
        [
            'id' => 1,
            'name' => 'A',
            'age' => 19
        ],
        [
            'id' => 2,
            'name' => 'B',
            'age' => 20
        ],
        [
            'id' => 3,
            'name' => 'C',
            'age' => 18
        ],
        [
            'id' => 4,
            'name' => 'D',
            'age' => 18
        ]
    ];


function demo($arr, $key, $val){
    $vals = array_column($arr, $key);
    $count = array_count_values($vals);
    return $count[$val];
}

$count = demo($arr, 'age', 18);
var_dump($count);   // 2
$number = array_count_values(array_column($data, 'age'))[18];

var_dump($number);

效率不高,只是代码足够简单。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题