Что я делаю сейчас:
$length = strlen($string);
if( $length > 5 && $length < $10 )
Во избежание двойного измерения длины:
if( strlen($string) > 5 && strlen($string) < 10 )
Есть ли лучший способ сделать это? Что-то вроде:
if( 5 < strlen($string) < 10 )
Здесь нет между оператор в 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 +.
К сожалению, в PHP нет гарантированного порядка вычисления выражений: см. обсуждение разработчиков языка PHP здесь. Таким образом, избегание временной переменной в вашем примере будет рискованным и зависит от версии PHP, платформы и т. Д.
Чтобы избежать двойной оценки в выражении, вы можете создать строковый класс и кэшировать его длину после оценки для последующего доступа.