Почему мое сравнение строк PHP завершается неудачей?

#php

#php

Вопрос:

У меня есть следующий фрагмент кода

 if ($summary == "CFD funding Interest Paid" ||
    $summary == "Commissions" ||
    $summary == "Closing trades") {
    print $summary.",".$date.",".$reference.",".$description.",".$amount."<br>";  
}
else {
    print $summary."*<br>";
}
  

Выводит следующее

Комиссии*
Комиссии*
Закрытие сделок*
Комиссии*
Закрытие сделок*

Почему строки, похоже, не совпадают?

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

1. Как выглядит $ summary?

2. Проверили наличие скрытых символов (новая строка и прочее) и чувствительность к регистру?

3. Я попробовал ваш код, установив $ summary =»Комиссионные», и он сработал правильно. Вы могли опубликовать недостающий код раньше?

Ответ №1:

Возможно, у вас есть начальный пробел? Вы могли бы обрезать () это, чтобы посмотреть, поможет ли это?

Ответ №2:

Вместо этого используйте strcmp(str1, str2) функцию.

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

1. 1 голос. У меня было две буквально идентичные строки длиной 6 символов — и это продолжало завершаться неудачей. — «demo 2» восстановлено из расшифрованного URL $_GET. — «demo 2» восстановлено из имени элемента массива. Сбой равенства, однако strcmp сработал.

2. 1, я сравнивал результат $ _SERVER [«REQUEST_METHOD»] со строковыми литералами. С запросом PUT, == сбой. strcmp сработало.

Ответ №3:

Добавьте trim() перед if () , это удаляет невидимые символы, такие как пробел…

 $summary = trim($summary);
if ($summary == "CF...