Равные строки не равны в php

#php

#php

Вопрос:

Привет, ребята, надеюсь, вы сможете мне помочь, я пытаюсь сравнить две строки, но я получаю один и тот же результат всегда «different», даже когда строки равны.

вот код:

 $date = $row["day"];

var_dump($date);
var_dump($today);

if ($date != $today) {
    echo "<br>diferent";
} else {
    echo "<br>equals";
}
  

var_dump для двух строк показывает это:

string(10) "03/30/2019" это соответствует $date

string(309) "03/30/2019" это соответствует $today

Как вы можете видеть, обе строки содержат одинаковую информацию, но в одной 10 символов, а в другой 309 почему это происходит? есть ли способ исправить это и доказать, что они равны?

Я использую JavaScript для установки $today значения s, так что это может быть проблемой?

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

1. var_dump(bin2hex($today)); и добавьте это в свой ответ. Также смотрите на исходный код , а не на отображаемый результат.

2. Пожалуйста, покажите, как вы получаете $today . Почему вы вообще используете JavaScript для этого?

Ответ №1:

Уважаемый, пожалуйста, смотрите приведенный ниже код, необходимо преобразовать код обоих форматов, пожалуйста, следуйте приведенному ниже коду

 $date = $row["day"];
$date=date('m/d/Y',strtotime($date));
$today=date('m/d/Y',strtotime($today));
var_dump($date);
var_dump($today);
if ($date != $today) {
echo "<br>diferent";
} else {
echo "<br>equals";
}
  

Это будет работать должным образом.

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

1. Я совершенно уверен, что если вы введете 309 символов в strtotime, то это вернет false.

Ответ №2:

Вы можете попробовать обрезать две строки, таким образом, все лишние символы должны быть удалены.

 if (trim($date) != trim($today)) {
  

Или вы можете использовать strpos, чтобы узнать, находится ли $date в $today.

 if(strpos($today, $date) !== false){
    echo "<br>equals";
}else{
    echo "<br>diferent";
}