0

我有一个数组,我想显示一周中的所有日子或一年中的每个月,即使数据为 0,是否可以查看数组内部并填写不存在的内容?

我从 mysql 表返回的数据不显示 0 - 详情如下

即使为空也显示值

所以,下面显示了一年中的月份和计数,我想用 'Feb' => '0' .. 'Sep' => '0' .. '十二月' => '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 回答