计算一个值出现在这个数组中的次数?
问题描述:
我有这个PHP数组命名$ids
:计算一个值出现在这个数组中的次数?
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;
}
}
我supose 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 demo。
$counts = [];
foreach($array as $v)
{
@$counts[$v['id']] += 1;
}
print_r($counts);
如何将它应用于我的代码? –
只需按照原样使用它,并使用包含原始数组的变量。 – Barmar
工程!太多了。 –