简体   繁体   中英

Calculate frequency of values in the array

I need to calculate the frequency of all values in the array $inputArr in order to build frequency histogram.

$query="SELECT delay FROM TestDB;";
$result=DatabaseConnector::ExecuteQueryArray($query);
$inputArr = array();
foreach ($result as $row) {
    $inputArr[] = array($row['delay']);
}

$freq = array_count_values ($inputArr);

But var_dump($freq) returns array(0). It's strange, because var_dump($inputArr) returns the following result (just a sample):

array(429) {
    [0]=>  array(1) { [0]=>  string(1) "0" }
    [1]=>  array(1) { [0]=>  string(1) "0" }
    [2]=>  array(1) { [0]=>  string(1) "0" }
    [3]=>  array(1) { [0]=>  string(1) "9" }
    [4]=>  array(1) { [0]=>  string(2) "12" }
    [5]=>  array(1) { [0]=>  string(1) "7" }
    [6]=>  array(1) { [0]=>  string(2) "15" }
    [7]=>  array(1) { [0]=>  string(1) "3" }
    [8]=>  array(1) { [0]=>  string(2) "13" }
    [9]=>  array(1) { [0]=>  string(1) "0" }
    [10]=>  array(1) { [0]=>  string(1) "1" }
    [11]=>  array(1) { [0]=>  string(2) "35" }
    [12]=>  array(1) { [0]=>  string(2) "24" }
    [13]=>  array(1) { [0]=>  string(2) "14" }
    [14]=>  array(1) { [0]=>  string(1) "4" }
    [15]=>  array(1) { [0]=>  string(1) "0" }
    [16]=>  array(1) { [0]=>  string(2) "26" }
    [17]=>  array(1) { [0]=>  string(1) "0" }

As it can be seen from this output, inputArr has repeating values, eg 0. So, why $freq = array(0) ?

我会考虑跳过PHP部分,并更改您的SQL语句来为您完成所有工作:

SELECT delay, count(*) AS freq FROM TestDB GROUP BY delay;

$inputArr[] = array($row['delay']);

You are making each element in $inputArr an array. You don't need a 2d array here, just do:

$inputArr[] = $row['delay'];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM