Я работал с кодом, который анализирует crontab.
https://stackoverflow.com/a/5727346/3774582
Я нашел, что это прекрасно работает, однако я обнаружил, что если бы я сделал Cron, как
0 * * * *
Он будет работать в 0 минут, 8 минут и 9 минут. Я разбил каждую строку кода.
https://gist.github.com/goosehub/7deff7928be04ec99b4292be10b4b7b0
Я обнаружил, что получаю это условие для значения 0, если текущая минута была 8.
08 === 0
Я проверял это с PHP
if (08 === 0) {
echo 'marco';
}
После этого я увидел marco
на выходе. Похоже, что PHP лечит 08
как восьмеричное. Потому что в восьмеричной после 07
является 010
, 08
а также 09
оценивается как 00
,
Как я могу форсировать десятичное сравнение в этом условном выражении?
Из документов PHP в Integer
http://php.net/manual/en/language.types.integer.php
Чтобы использовать восьмеричное обозначение, перед числом ставьте 0 (ноль).
Тем не менее, не просто использовать ltrim($time[$k], '0')
потому что это превратится 0
в , Вместо этого используйте регулярное выражение. В этом случае,
/^0+(?=\d)/
,
В этом случае примените его к $time[$k]
вход вроде так.
$time[$k] = preg_replace('/^0+(?=\d)/', '', $time[$k]);
Других решений пока нет …