oop — & amp; и || условия в одном условии IF в переполнении стека

Я хочу проверить, равна ли длина $ 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

-3

Решение

Было бы неплохо узнать, чего пытается достичь ваш скрипт, кроме использования однострочного в условном выражении относительно пустой строки или числовой строки. С помощью 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

0

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

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