0

データが 0 であっても、すべての曜日または各月を表示したい配列があります。配列内を調べて、そこにないものを埋めることはできますか?

mysql テーブルから返されたデータに 0 が表示されない - 詳細は以下

空の場合でも値を表示

したがって、以下は月とカウントを示しています。そこにない月を 'Feb' => '0' .. 'Sep' => '0' .. ' で埋めたいと思います。 12月' => '0'

配列の例:

$data = array(
    'Jan' => 12,
    'Mar' => 10,
    'Apr' => 7,
    'May' => 80,
    'Jun' => 67,
    'Jul' => 45,
    'Aug' => 66,
    'Oct' => 23,
    'Nov' => 78,
);
4

3 に答える 3

2

array_fill_keys「既知の適切な開始点」を作成するために使用してから、array_mergeまたは配列を追加してデータを組み込みます。

例:

$data = array_fill_keys(array('Jan', 'Feb', 'etc'), 0);
$data = array('Feb' => 40) + $data;

注意: 結果は月ごとに並べられるわけではありません。

于 2012-09-30T09:51:24.667 に答える
2

まず、この配列を元の配列にマージするよりも、デフォルト値が 0 の空の配列を作成します。

$data = array(
    'Jan' => 0,  
    'Feb' => 0,
    'Mar' => 0,
    'Apr' => 0,
    'May' => 0,
    'Jun' => 0,
    'Jul' => 0,
    'Aug' => 0,
    'Sep' => 0,
    'Oct' => 0,
    'Nov' => 0,
    'Dec' => 0;
);

$data2 = array(
    'Jan' => 12,
    'Mar' => 10,
    'Apr' => 7,
    'May' => 80,
    'Jun' => 67,
    'Jul' => 45,
    'Aug' => 66,
    'Oct' => 23,
    'Nov' => 78,
);

$newarray=array_merge($data, $data2);
于 2012-09-30T09:55:35.967 に答える
0

前の質問ですでに指摘したように、月名用の何らかの「ルックアップ テーブル」を作成する必要があります。データベース内でそれを行わない場合は、PHP で行う必要があります。このような「テーブル」は、月名の配列である可能性があります。

$months = array(
    'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
);

次に、月の名前を反復処理して、結果に存在する場合は番号を選択するかデフォルト値を使用できます。

$default = 0;
foreach ($months as $month) {
    $value = isset($data[$month]) ? $data[$month] : $default;
    # $value now contains the month value
    ...
}

これはうまくいくはずです。

$monthsデータベースが返す月名は、配列で使用するものと同じである必要があることに注意してください。

于 2012-09-30T10:14:42.457 に答える