неправильное поведение php при сравнении

#php #string #string-comparison #string-length

#php #строка #строка-сравнение #длина строки

Вопрос:

 $string = '540';

if (strlen ($string >= 34)){
    print_r((substr($string, 0, 30) . "..."));
} else {
    print_r(($string));
}
  

Если $string она длиннее 34 символов, к ней следует добавить «…», в противном случае следует просто напечатать строку.

Я думаю, что происходит то, что интерпретатор предполагает, что строка является числом, когда он выполняет сравнение.

У него также возникает тот же сбой, если я изменяю $string на

 $string = '540 rocks !'
  

Почему это?

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

1. Что заставило вас подумать, что это > сравнивает количество цифр ???

2. Кроме того, вам никогда не понадобятся двойные круглые скобки, поэтому измените свой print_r(($string)) на print_r($string) .

3. Виноват . . . Я спешил, не заметил скобки

Ответ №1:

Должно быть:

 if (strlen($string) >= 34)) {
  

Не

 if ($string >= 34)){
  

Ответ №2:

Если вы хотите проверить длину строки, просто измените эту строку:

 if ($string >= 34)){
  

в это:

 if (strlen($string) >= 34)){