【问题标题】:Calculate frequency of values in the array计算数组中值的频率
【发布时间】:2012-07-26 21:37:10
【问题描述】:

为了构建频率直方图,我需要计算数组$inputArr 中所有值的频率。

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

$freq = array_count_values ($inputArr);

但是var_dump($freq) 返回数组(0)。这很奇怪,因为var_dump($inputArr) 返回以下结果(只是一个示例):

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" }

从这个输出可以看出,inputArr 具有重复值,例如0。 那么,为什么是$freq = array(0)

【问题讨论】:

    标签: php arrays histogram


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      $inputArr[] = array($row['delay']);
      

      您正在将$inputArr 中的每个元素设为一个数组。这里不需要二维数组,只需:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-25
        • 2020-05-09
        • 1970-01-01
        • 2021-12-12
        • 2021-07-28
        • 2012-04-19
        • 1970-01-01
        • 2011-08-18
        相关资源
        最近更新 更多