Почему не работает код php сравнение сроки с значением массива?
//Подключение библиотеки require_once 'simple_html_dom.php'; $site = new simple_html_dom(); // Подключение к сайту $site->load_file('http://localhost/caravan-mod.kz/'); // Парсинг строки foreach($site->find('div.city') as $element) { // Доступ к данным элемента $city = $element->innertext; // Дальнейшая обработка данных } //Очистка кеша $site->clear(); // Удаление лишних тегов $cities= strip_tags($city); // Проверям тип переменной результат string ее значение Almaty echo gettype($cities) //Создаем массив $weathers = array( "https://www.gismeteo.kz/weather-almaty-5205/" => "Almaty", "https://www.gismeteo.kz/weather-aktobe-5165/" => "Aktobe" ); // Проводим сравнение foreach ($weathers as $key => $val) { if ($val == $cities) { echo "Удача"; }else{ echo "Неудача"; } // Результат Неудача |
//Подключение библиотеки require_once 'simple_html_dom.php'; $site = new simple_html_dom(); // Подключение к сайту $site->load_file('http://localhost/caravan-mod.kz/'); // Парсинг строки foreach($site->find('div.city') as $element) { // Доступ к данным элемента $city = $element->innertext; // Дальнейшая обработка данных } //Очистка кеша $site->clear(); // Удаление лишних тегов $cities= strip_tags($city); // Проверям тип переменной результат string ее значение Almaty echo gettype($cities) //Создаем массив $weathers = array( "https://www.gismeteo.kz/weather-almaty-5205/" => "Almaty", "https://www.gismeteo.kz/weather-aktobe-5165/" => "Aktobe" ); // Проводим сравнение foreach ($weathers as $key => $val) { if ($val == $cities) { echo "Удача"; }else{ echo "Неудача"; } // Результат Неудача
Дополнительно:
А что с чем он должен сравнивать? Сейчас у вас в cities текст из последнего div.city на странице. Вы бы лучше вывели не тип переменной, а её значение.
Значит эти строки не тождественны.
Сделайте рядом с echo("Неудача"):
var_dump(rawurlencode($val), rawurlencode($cities)); |
var_dump(rawurlencode($val), rawurlencode($cities));
и сравнивайте, посимвольно.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Существует несколько причин, по которым код PHP может не работать при сравнении строки со значением массива. Одной из возможных причин может быть неправильное использование операторов сравнения или неправильное форматирование данных.
Во-первых, необходимо убедиться, что вы используете правильные операторы сравнения для сравнения строки с массивом. Например, если вы хотите проверить, содержит ли массив определенное значение, вам нужно использовать функцию in_array(). Если же вы хотите сравнить строку с элементом массива, используйте операторы сравнения, такие как == или ===.
Во-вторых, необходимо убедиться, что данные в массиве и строка имеют одинаковый формат. Например, если вы сравниваете строку с числовым значением в массиве, убедитесь, что оба значения имеют одинаковый тип данных. В противном случае сравнение может не сработать корректно.
Также стоит проверить, что вы обращаетесь к правильному элементу массива при сравнении. Убедитесь, что индексы массива указаны правильно и что элемент с таким индексом действительно существует.
Кроме того, возможно, что проблема связана с областью видимости переменных. Убедитесь, что переменные, которые вы используете для сравнения, доступны в нужном контексте.
И наконец, не забывайте о возможности ошибок в синтаксисе кода. Проверьте ваш код на наличие опечаток, лишних символов или неправильного использования ключевых слов.
В целом, чтобы выявить причину неработающего кода при сравнении строки с значением массива, необходимо внимательно проанализировать ваш код, убедиться в правильности использования операторов сравнения, типов данных и индексов массива, а также проверить наличие ошибок в синтаксисе.