оператор if — узнать, находится ли значение в диапазоне с одним условием if в PHP?

Что я делаю сейчас:

$length = strlen($string);
if( $length > 5 && $length < $10 )

Во избежание двойного измерения длины:

if( strlen($string) > 5 && strlen($string) < 10 )

Есть ли лучший способ сделать это? Что-то вроде:

if( 5 < strlen($string) < 10 )

0

Решение

Здесь нет между оператор в PHP. Вы могли бы сделать что-то вроде:

if (in_array($someVar, range($min, $max)))

if (in_array(strlen($string), range(6, 9))) // In your case 5 and 10 are not included

То, как вы делаете, хорошо и чисто, и, вероятно, немного быстрее, чем диапазон in_array +.

0

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

К сожалению, в PHP нет гарантированного порядка вычисления выражений: см. обсуждение разработчиков языка PHP здесь. Таким образом, избегание временной переменной в вашем примере будет рискованным и зависит от версии PHP, платформы и т. Д.

Чтобы избежать двойной оценки в выражении, вы можете создать строковый класс и кэшировать его длину после оценки для последующего доступа.

0

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