[Exam Problems] PHP Basics - Sample Exam - Variant 3 + Решенията от подготовката
Здравейте. Може ли да ми помогнете с решението на тази задача? И по - точно имате ли идея защо в judge-a ми дава 40/100 за това решение -- > Problem 1 Computer Smuggler ?
П.П. Аз сам си открих първата грешка - вместо elseif трябва да са ми отделни if-ове. Сега дава 90/100, но последните 10 не се сещам от къде идват..
П.П.2 Разбрах къде ми е другата грешка - в default-ния случай на switch-a. Не рябва да има нищо там. Доста глупави грешки съм направил. :) Малко сам си пописах..
Дебъгнах ти набързо програмата, не съм търсил реално решение, само ще ти кажа за какво скриймва джъджа.
Почнах да слагам exit()-ове от ред на ред, докато не хвърли ексепшън. За щастие хвърли още на 3тия ред след new DateTime(); Оградих го в try catch и var_dump()-нах ексепшънах:
Тук можеш да видиш какви са валидните формати, които можеш да подадеш на DateTime:
http://php.net/manual/en/datetime.formats.date.php
Няколко евентуални решения:
http://stackoverflow.com/questions/24466794/fatal-error-uncaught-exception-exception-with-message-datetime-construct
Аз лично само за теста, при твоя код смених наклонените черти с точки и решението ти изкара 50 точки.
$td = str_replace('/', '.', $_GET['today']);
$today = new DateTime($td);
Благодаря ти @RoYaL!
Да ме пита човек, защо съм оставил $today = new DateTime($_GET['today']); и то при положение, че вече бях видял, че е проблемно това парсване на дата по-надолу в кода...
По този начин вече ми дава 50-те точки, сега ще търся другите къде се губят:
Благодаря отново!
ПС. Пропуснах да кажа, че датите са ми най-мътното нещо във всички езици, които сме учили до момента...
Обаче още ми е странно и неясно защо като пусках програмата и var_dump-вах променливата имах правилно парснат Datetime обект аналогичен на обекта, който се създава и с коригирания вече код?