Я хочу проверить, равна ли длина $ a 0 или длина не равна 0, а затем проверить, является ли это числовым значением в одном операторе IF в PHP. Я пробовал это, но не работает
$a = '23bc';
if((strlen($a)===0 || (strlen($a)>0 && ctype_digit($a))) )
{
echo 'Good to Go';
}
else
{
echo 'Bad to Go';
}
Я не хочу применять здесь вложенные условия. Возможно ли сделать это в одном выражении IF?
Я нашел этот вопрос здесь, но это не отвечает на то, что я прошу && (И) и || (ИЛИ) в заявлениях IF
Было бы неплохо узнать, чего пытается достичь ваш скрипт, кроме использования однострочного в условном выражении относительно пустой строки или числовой строки. С помощью cytpe_digit () каждый символ должен оцениваться как число, чтобы квалифицироваться как числовая строка. Вы получаете ложный результат с ’23bc’ из-за части ‘bc’.
Один из проблемных аспектов сценария заключается в том, что неизвестно, какое условие приводит к истине. Одно или другое условие может быть истинным или оба могут быть ложными.
Посмотреть демо: http://3v4l.org/8Pchk.
Вы можете переписать код, использующий троичное выражение, чтобы получить одну строку, исключающую конструкцию if-else, следующим образом:
<?php
$a = '23bc';
if( strlen( $a ) != 0) {
echo ctype_digit( $a )? "Good to Go\n" : "Bad to Go\n";
}
Следующее может более соответствовать тому, что вы спрашиваете. Вот окончательный однострочник:
<?php
echo ( !strlen($a) || ctype_digit($a) )? "Good to Go\n" : "Bad to Go\n";
Из-за строгости идентичности оператора ===
если $ a равно нулю, то вы увидите «Bad to Go». Вы можете проверить равенство strlen($a) == 0
или вы можете быть более кратким, используя !
оператор (логическое НЕ). Посмотреть демо: http://3v4l.org/7cfV0
Других решений пока нет …