我有以下代码:
$chart_data = array();
foreach ($range as $range_day) {
foreach ($numbers as $number) {
if($range_day == $number['date']){
@$chart_data[$range_day] += $number['events'];
} else {
if(isset($chart_data[$range_day])){
$chart_data[$range_day] += 0;
}
}
}
}
这一行:$chart_data[$range_day] += 0;
给了我一个未定义的索引错误,所以我添加了isset
检查,但它没有设置,所以它会破坏我的数组。我知道它没有设置,我也不在乎,但我读到@
解决方案的味道很差。如何以正确的方式删除错误?
答案 0 :(得分:1)
您是否看过array_key_exists
函数:http://php.net/manual/en/function.array-key-exists.php?
类似的东西:
$chart_data = array();
foreach ($range as $range_day) {
foreach ($numbers as $number) {
if(!array_key_exists($range_day, $array)) {
$chart_data[$range_day] = 0;
}
if($range_day == $number['date']){
$chart_data[$range_day] += $number['events'];
}
}
}
答案 1 :(得分:1)
您可以在开头将其设置为零:
$chart_data = array();
foreach ($range as $range_day) {
$chart_data[$range_day] = 0;
foreach ($numbers as $number) {
if($range_day == $number['date']){
$chart_data[$range_day] += $number['events'];
} else {
if(isset($chart_data[$range_day])){
$chart_data[$range_day] += 0;
}
}
}
}
答案 2 :(得分:1)
您可以检查是否不设置,然后设置:
foreach ($numbers as $number) {
if (!isset($chart_data[$range_day])) {
$chart_data[$range_day] = 0;
}
if ($range_day == $number['date']) {
$chart_data[$range_day] += $number['events'];
} else {
$chart_data[$range_day] += 0; // you're just adding 0 so why have this line at all?
}
}
此答案假设$range
可能包含重复的$range_day
,因此它不会覆盖$chart_data
中的相应元素。