繁体   English   中英

计算一个值在此数组中出现多少次?

[英]Count how many times a value appears in this array?

我有这个名为$ids php数组:

Array ( 
     [0] => Array ( [id] => 10101101 ) 
     [1] => Array ( [id] => 18581768 ) 
     [2] => Array ( [id] => 55533322 ) 
     [3] => Array ( [id] => 55533322 ) 
     [4] => Array ( [id] => 64621412 )
)

我需要创建一个包含每个$ids id值的新数组,作为新键,以及每个数组出现的时间,作为新值。

像这样:

$newArr = array(
    10101101 => 1,
    18581768 => 1,
    55533322 => 2,
    64621412 => 1,
);

这就是我所拥有的:

$newArr = array();
$aux1 = "";

//$arr is the original array
for($i=0; $i<count($arr); $i++){
    $val = $arr[$i]["id"];
    if($val != $aux1){
        $newArr[$val] = count(array_keys($arr, $val));
        $aux1 = $val;
    }
}

我认为array_keys在这里不起作用,因为$ arr在第二维中具有id值。

那么,我该如何做呢?

对不起,我的英语不好,谢谢。

array_column将创建一个二维数组特定列中所有元素的数组,并且array_count_values将计算数组中每个值的重复次数。

$newArr = array_count_values(array_column($ids, 'id'));

或者像这样手动操作,其中$arr是您的源数组, $sums是您的结果数组。

$sums = array();
foreach($arr as $vv){
    $v = $vv["id"];
    If(!array_key_exists($v,$sums){
        $sums[$v] = 0;
    }
    $sums[$v]++;
}

您可以遍历数组,并总结id的外观live live demo

$counts = [];
foreach($array as $v)
{
  @$counts[$v['id']] += 1;
}
print_r($counts);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM