计算一个值出现在这个数组中的次数?

问题描述:

我有这个PHP数组命名$ids计算一个值出现在这个数组中的次数?

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

,我需要让每个包含$idsid值的新阵列,作为新的钥匙,而且每一个出现的时候,作为新的价值观。

事情是这样的:

$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; 
    } 
} 

我supose array_keys因为$ ARR在第二个维度的ID值不会在这里工作。

那么,我该如何做这项工作?

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

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

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

如何将它应用于我的代码? –

+0

只需按照原样使用它,并使用包含原始数组的变量。 – Barmar

+0

工程!太多了。 –

或者做手工像这样的地方$arr是您的源阵列和$sums是你的结果阵列。

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

可以遍历您的阵列,并总结了ID外观,live demo

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