0

$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)array(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)ですか?

4

2 に答える 2

5

PHPの部分をスキップし、SQLステートメントを変更してすべての作業を行うことを検討します。

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

于 2012-07-26T21:41:36.283 に答える
4
$inputArr[] = array($row['delay']);

配列内の各要素を作成しています$inputArr。ここでは2D配列は必要ありませんが、次のようにしてください。

$inputArr[] = $row['delay'];
于 2012-07-26T21:40:51.897 に答える