簡體   English   中英

多維數組中的php計數頻率

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM