Как запретить PHP выполнять восьмеричные вычисления в условных выражениях? (почему 08 === 0)

Я работал с кодом, который анализирует 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,

Как я могу форсировать десятичное сравнение в этом условном выражении?

1

Решение

Из документов 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]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]