Почему не работает код php сравнение сроки с значением массива?

Ссылка скопирована
PHP
27 февраля 2026 1 ответ
//Подключение библиотеки 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 на странице. Вы бы лучше вывели не тип переменной, а её значение.

  • Rsa97, ее значение Almaty
  • AlexandraSvetik, Сделайте var_dump переменной. Там вполне может быть " Almaty" или "Almaty ".
  • Rsa97, спасибо были пробелы)
  • Значит эти строки не тождественны.
    Сделайте рядом с echo("Неудача"):

    var_dump(rawurlencode($val), rawurlencode($cities));

    var_dump(rawurlencode($val), rawurlencode($cities));

    и сравнивайте, посимвольно.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Максим Павлов Ответ

    Существует несколько причин, по которым код PHP может не работать при сравнении строки со значением массива. Одной из возможных причин может быть неправильное использование операторов сравнения или неправильное форматирование данных.

    Во-первых, необходимо убедиться, что вы используете правильные операторы сравнения для сравнения строки с массивом. Например, если вы хотите проверить, содержит ли массив определенное значение, вам нужно использовать функцию in_array(). Если же вы хотите сравнить строку с элементом массива, используйте операторы сравнения, такие как == или ===.

    Во-вторых, необходимо убедиться, что данные в массиве и строка имеют одинаковый формат. Например, если вы сравниваете строку с числовым значением в массиве, убедитесь, что оба значения имеют одинаковый тип данных. В противном случае сравнение может не сработать корректно.

    Также стоит проверить, что вы обращаетесь к правильному элементу массива при сравнении. Убедитесь, что индексы массива указаны правильно и что элемент с таким индексом действительно существует.

    Кроме того, возможно, что проблема связана с областью видимости переменных. Убедитесь, что переменные, которые вы используете для сравнения, доступны в нужном контексте.

    И наконец, не забывайте о возможности ошибок в синтаксисе кода. Проверьте ваш код на наличие опечаток, лишних символов или неправильного использования ключевых слов.

    В целом, чтобы выявить причину неработающего кода при сравнении строки с значением массива, необходимо внимательно проанализировать ваш код, убедиться в правильности использования операторов сравнения, типов данных и индексов массива, а также проверить наличие ошибок в синтаксисе.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно