Какой самый лучший способ проверки переменной на то что она является числом и не равно 0? PHP: if (!is_numeric($id) or empty($id))
Я обычно не проверяю,а привожу к нужному мне типу. PHP: $id = (int)$_GET['id']; Ну а после можно уже проверить 0 там или нет.
Автор, вот тебе в помощь. Там много интересного, особенно по второй ссылке. Вторая ссылка - расширение первой. Раз https://php.net/manual/ru/function.filter-var два https://php.net/manual/ru/filter.filters.validate И это не правильно, потому что при приведении к типу ты гарантированно получаешь этот тип. А автору нужна проверка. Мы же не знаем контекст его задачи. Мб если там строка, нужно какое-то другое действие.
Ну я и описал свой подход исходя из того что id гарантированно должно быть int и без каких либо условий. А так, если ему нужна именно валидация и в случае если она даст false у него будут какие то действия то твои ссылки то что нужно ТС. PHP: filter_var($id,FILTER_VALIDATE_INT);
Тут есть еще такое дело, как семантика и самодокументируемость кода. Использование filter_var однозначно трактуется как "автор кода проверяет переменную". Использование каста же, семантически, является странной логикой. Вместо проверки мы приводим переменную к другому типу, и только потом заглядываем внутрь. Это даже чисто на низком уровне больше телодвижений. Приведение и проверка на 0 стоят, скорее всего, чуть дороже, чем проверка на число и проверка на 0. И, само собой, такой код уже сложнее в понимании в долгосрочной перспективе. Все должно быть на своем месте.
Ну если брать низкий уровень,то и побитовый сдвиг менее затратная операция чем умножение на 2 и так можно глубоко углубляться в недры языка,можно использовать SplFixedArray вместо обычного массива если ты знаешь конкретное число элементов массива,так как памяти потребляется во много раз меньше.С моей субъективной точки зрения конечно же получать однозначные данные вместо их валидации конкретно в случае с id которые как правило являются int проще, нежели делать какую либо валидацию задавая вопрос "а действительно там число?".Опять же это мой подход,я его никому не навязываю. Просто поделился некими соображениями с ТС касаемо того,как лично я реализую работу с id ПРИ условии опять же что else я не предусматриваю.