我有一个数组,我想显示一年中的所有日子或一年中的每个月,即使数据为0,是否可以查看数组内部并填写不存在的内容?
我从mysql表返回的数据不显示0 - 下面的详细信息
所以,下面显示了一年中的几个月和计数,我想填写那些不存在的月份,即'Feb'=> '0'..'Sep'=> '0'..'Dec'=> '0'
数组示例:
$data = array(
'Jan' => 12,
'Mar' => 10,
'Apr' => 7,
'May' => 80,
'Jun' => 67,
'Jul' => 45,
'Aug' => 66,
'Oct' => 23,
'Nov' => 78,
);
答案 0 :(得分:2)
使用array_fill_keys
创建“已知的良好起点”,然后array_merge
或添加数组以合并您的数据。
示例:
$data = array_fill_keys(array('Jan', 'Feb', 'etc'), 0);
$data = array('Feb' => 40) + $data;
警告:结果不会按月份排序。
答案 1 :(得分: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);
答案 2 :(得分:0)
正如the previous question中已经指出的那样,您需要为月份名称创建某种“查找表”。如果您不在数据库中执行此操作,则需要在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
数组中使用的月份名称相同。