我有这个名为$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值。
那么,我怎样才能做到这一点?
抱歉我的英文不好,谢谢。
答案 0 :(得分:5)
array_column
将创建一个包含二维数组特定列中所有元素的数组,array_count_values
将计算数组中每个值的重复次数。
$newArr = array_count_values(array_column($ids, 'id'));
答案 1 :(得分:1)
或者像这样手动执行,其中$arr
是您的源数组,$sums
是您的结果数组。
$sums = array();
foreach($arr as $vv){
$v = $vv["id"];
If(!array_key_exists($v,$sums){
$sums[$v] = 0;
}
$sums[$v]++;
}
答案 2 :(得分:0)
您可以遍历数组,并将ID外观live demo加起来。
$counts = [];
foreach($array as $v)
{
@$counts[$v['id']] += 1;
}
print_r($counts);