JSONにPHPの配列を送信するとき、私は先頭に「0」を削除すべきか?

ベアC:

私のプロジェクトでは、「Chart.Js」と棒グラフを作成することです。

チャートは年にすべての週に基づいてレコードを表示する必要があります。データは、MySQLの日時]列から来ています。

これは、私はそれを行う方法である:
まず、は、MySQLで選択マイ:$query = "SELECT datetime_start FROM table WHERE datetime_start LIKE '2020%' ORDER BY datetime_start ASC";

2020年3月12日午前9時38分00秒:今、私のようなレコードを持っています

グループに週に日付が、私は次の操作を行います。

while($row = $stmt->fetch()){

    $date = new DateTime($row['datetime_start']);
    $week = $date->format("W");

    $data[$week]++;
}

そして、このことから私はJSにして、それを送信します。 echo json_encode($data);

JSでは私がやるconsole.log(result)と私は鍵が週表すリストを取得し、値iはその週に持っているどのように多くの日数です。

私の問題はaccoursところです!
リストがソートされます。

{10: 42, 11: 40, 12: 40, 13: 44, 14: 26, 15: 33, 16: 27, 17: 31, 18: 21, 19: 21, 20: 20, 21: 22, 22: 25, 23: 22, 24: 19, 25: 7, 26: 9, 27: 6, 28: 1, 29: 6, 30: 5, 31: 7, 32: 1, 33: 5, 34: 5, 35: 6, 36: 4, 37: 2, 38: 2, 39: 4, 40: 2, 41: 3, 42: 2, 43: 3, 44: 3, 45: 3, 46: 2, 47: 2, 48: 6, 49: 4, 50: 4, 51: 2, 52: 2, 53: 1, 01: 23, 02: 25, 03: 34, 04: 43, 05: 31, …}

週10週01の前に来て、これは私のチャートは、このように見てになります。

ここでは、画像の説明を入力します。

WICHの方法は、この問題を解決するのが最善でしょうか?

私は週数の先行ゼロを持っていません(datetimeオブジェクトのためのPhp.netをチェックしているformat('w'))、それは存在しません。

私はこれを解決するためにPHPやJSで先行ゼロを削除すべきか?私はPHPアレイ01との正しい開始だと思うが、私はそれは、JSONをデコードするとき、順序変更および10は、オブジェクトの最初のキーであろう!

EDIT

私のPHPは、罰金になります:

Array ( [01] => 23 [02] => 25 [03] => 34 [04] => 43 [05] => 31 [06] => 37 [07] => 32 [08] => 34 [09] => 45 [10] => 42 [11] => 40 [12] => 40 [13] => 44 [14] => 26 [15] => 33 [16] => 27 [17] => 31 [18] => 21 [19] => 21 [20] => 20 [21] => 22 [22] => 25 [23] => 22 [24] => 19 [25] => 7 [26] => 9 [27] => 6 [28] => 1 [29] => 6 [30] => 5 [31] => 7 [32] => 1 [33] => 5 [34] => 5 [35] => 6 [36] => 4 [37] => 2 [38] => 2 [39] => 4 [40] => 2 [41] => 3 [42] => 2 [43] => 3 [44] => 3 [45] => 3 [46] => 2 [47] => 2 [48] => 6 [49] => 4 [50] => 4 [51] => 2 [52] => 2 [53] => 1 )

これは厄介な取得JSONです:

{10: 42, 11: 40, 12: 40, 13: 44, 14: 26, 15: 33, 16: 27, 17: 31, 18: 21, 19: 21, 20: 20, 21: 22,…}
Barmar:

インデックス付き配列を使用して、連想配列を使用しないでください。ループでそれを更新し、53個の要素を持つ配列を作成することによって開始します。

$data = array_fill(0, 53, 0);
while($row = $stmt->fetch()){

    $date = new DateTime($row['datetime_start']);
    $week = $date->format("W");

    $data[intval($week)]++;
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=303272&siteId=1