Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Как можно проверить переменную на соответствие одной цифре из десятичной системы счисления?

#php


Есть что-то короче этого

if ($var == 1 || $var == 2 || $var == 3 || $var == 4 || $var == 5 || $var == 6 ||
$var == 7 || $var == 8 || $var == 9 || $var == 0)


?
    


Ответы

Ответ 1



if (preg_match('!^[0-9]$!',$var)) остальные предложенные варианты не годятся, в том числе и код автора вопроса $var = "3 piglets"; var_dump($var == 1 || $var == 2 || $var == 3 || $var == 4 || $var == 5 || $var == 6 || $var == 7 || $var == 8 || $var == 9 || $var == 0); var_dump(in_array($var, [1,2,3,4,5,6,7,8,9,0])); var_dump($var>=0 && $var<=9); var_dump(preg_match('!^[0-9]$!',$var)); // bool(true) // bool(true) // bool(true) // int(0) Учим РНР, читаем про приведение типов. Отличительной особенностью сайтов сети Stack Overflow является то, что большинство посетителей составляют люди, весьма поверхностно знакомые с предметом вопроса.

Ответ 2



Для тех, кто избегает регулярных выражений: if(sscanf($var,"%1d%s")==[$var,null]), так можно проверить и первую цифру, и отсутствие текста за ней. Тест: var_dump(sscanf($var="1","%1d%s")==[$var,null]); var_dump(sscanf($var="12","%1d%s")==[$var,null]); var_dump(sscanf($var="3 piglets", "%1d%s")==[$var,null]); Результаты: boolean true boolean false boolean false

Ответ 3



Проверить, что длина ровно один байт, а ASCII-код символа – от 48 до 57 (десятичные цифры): if( strlen($var)==1 && ord($var)>=48 && ord($var)<=57) Тесты: 0 true 1 true 2 true 3 true 4 true 5 true 6 true 7 true 8 true 9 true 10 false 11 false '1' true 'A' false '4Hero' false 'Ё' false 'Стэк' false

Комментариев нет:

Отправить комментарий