0

嗨,我正在上一个时间表课程,但我遇到了最奇怪的问题。通常我会很快弄清楚自己,但这次它完全是零意义

if 子句如下:

if($start < self::$aStoreHours[$day]['start']){

正如您在这里看到的那样,它给了我一个未定义的索引错误,这会告诉我数组键不存在所以我使用 var_dump 返回完整的数组,我得到:(我只剪掉了第一个相关部分)

array(6) { [2]=> array(2) { ["start"]=> string(3) "480" ["end"]=> string(4) "1300" }

所以键 2 确实存在,现在我转储返回的 $day 变量

string(1) "2"

好的,这给出了 2,这很奇怪,所以我认为它可能一定是一个 INT(以前从未遇到过这个问题,但在严格的语言中这很重要)所以我使用 intval 和 (int) 方法现在 PHP 在我所以这不是问题

现在对于最奇怪的部分,完整的错误是

Undefined index: 1

所以它试图告诉我,它试图调用 self::$aStoreHours[1] 但 $day 变量肯定是 2 (是的,行号是正确的,如果我在 $day 变量返回 2 之前转储它)

所以突然 $day 变量要么被忽略,但它会给出一个 null 所以不是这样,据我所知 $day 变量被更改为 1 这是数组中不存在的键,但它不会改变

更奇怪的是,代码昨天运行没有问题(它使用时间戳,所以不太奇怪)

我希望这个问题已经得到充分解释,有人可以帮助我,因为这对我来说毫无意义

注意:使用 Laravel 框架

更新:是的,它在函数范围内运行,变量不能从外部更改更大的部分代码

private static function addTime($day,$start,$end,$title){

    echo $day.':'.$start.':'.$end.':'.$title.'<br>';

    //Check if start isnt lower then opening time, and that end isnt past closing time
    if($start < self::$aStoreHours[$day]['start']){
        $start = self::$aStoreHours[$day]['start'];
    }

    if($end > self::$aStoreHours[$day]['end']){
        $end = self::$aStoreHours[$day]['end'];
    }
4

1 回答 1

1

感谢有用的评论,我发现问题在第一次调用时没有出现,但在第 7 次调用时,我通过添加这部分代码发现了这一点

if(!array_key_exists($day, self::$aStoreHours)){
 die(var_dump($day));
}

虽然在我在第一次通话时杀死它之前,但当时 $day 仍然正确 事实证明,选择的时间戳是从下周开始的星期一,这不是 SQL 查询,因为允许脚本获取过去和未来的时间戳,只要涉及今天的时间戳和收盘时一周的最后一天

但是我削减了比当前时间段更长或更短的时间戳,可悲的是我的结束时间戳,我用来削减一天到远的时间戳,给出下周星期一的时间戳。它试图将其解析为本周的星期一,但这是不允许的,因为它是星期二,星期一是无关紧要的。

长话短说,我必须多思考一下。

感谢大家的帮助!

于 2012-12-29T16:46:38.273 回答