#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";
}