[英]Php count frequency in multidimensional array
我有一個$array
,我想計算$i->x->y
存儲的數字從1到10的頻率。
我做了
foreach($array as $i){
if($i->x->y == 1){
$a++;
}elseif ($i->x->y == 2){
$b++;
}elseif ($i->x->y == 3){
$c++;
}
...
array_push($count, $a, $b, $c);
我可以做到這一點,但它確實有效,但是我敢肯定,還有一種更優雅的方式可以做到這一點。 有array_count_values函數,但是我不確定這如何適用於這種情況。
我將啟動第二個數組,該數組將鍵保留為要跟蹤的數字,並帶有一個保存該數字的值。 例:
$array = array(1,2,3,5,4,7,5,6,9,8,10,4,6,8,7,1,3,6,8,7,10,5,8,3);
$counts = array();
foreach($array as $i) {
if(array_key_exists($i, $counts)) {
$counts[$i]++;
} else {
$counts[$i] = 1;
}
}
做一個var_dump($counts);
產生這個:
array(10) {
[1]=>
int(2)
[2]=>
int(1)
[3]=>
int(3)
[5]=>
int(3)
[4]=>
int(2)
[7]=>
int(3)
[6]=>
int(3)
[9]=>
int(1)
[8]=>
int(4)
[10]=>
int(2)
}
希望對您有所幫助。
我使用一個頻率數組進行了測試,該頻率數組具有從1到零的每個數字的計數器
// random numbers to validate
$rnd_arr = array();
// freq array
$freq;
// random numbers
for($i = 0; $i < 500; $i++) {
array_push($rnd_arr, rand(1, 10));
}
// initiate the counter for each number from 1 to 10
for ($i=1; $i < 10; $i++) {
# code...
$freq[(string) $i] = 0;
}
// check the frequency
for($i = 0; $i < 500; $i++) {
$freq[(string) $rnd_arr[$i]]+= 1;
}
print_r($freq);
// random output
Array ( [1] => 53 [2] => 61 [3] => 48 [4] => 68 [5] => 48 [6] => 40 [7] => 45 [8] => 56 [9] => 36 [10] => 45 )
如果它不完全是您需要的只是發布您的代碼,那么我可以幫助您。 干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.