PHP проверяет значение в условиях совпадения массива, затем выводит эти конкретные значения

Я пытаюсь отобразить информацию о фильме из списка XML, который соответствует заголовку записи.

$movie_title переменная названия фильма.

Сейчас у меня 2 проблемы:

  • Если заголовок не совпадает, оператор else будет отображать «Нет совпадений!» за каждый ход, который не соответствует условию оператора if.

  • Как ограничить результат только для первого фильма, соответствующего названию.

Мне также интересно, есть ли лучший способ сделать это.

$movie_title = get_the_title();
$movies = simplexml_load_file('http://www.kolosej.si/spored/xml/2.0/');

foreach($movies as $movie) {

$movie_list = $title=$movie->title;

if((strpos($movie_list, $movie_title)) !== false) {

echo $original_title=$movie->original_title . '<br>';
echo $description=$movie->plot_outline;

} else {
echo 'No match!';
}
}

0

Решение

Это будет работать, установив $found когда вы на самом деле найдете соответствующий заголовок фильма и только вывод No Match если $found не установлен

<?php
$movie_title = get_the_title();
$movies = simplexml_load_file('http://www.kolosej.si/spored/xml/2.0/');
$found = false;

foreach($movies as $movie) {

$movie_list = $title=$movie->title;

if((strpos($movie_list, $movie_title)) !== false) {

echo $original_title=$movie->original_title . '<br>';
echo $description=$movie->plot_outline;
$found = true;
break;  // assuming there will only be one, else leave this out
}

}
if ( ! $found ) {
echo 'No match!';
}
1

Другие решения

Вы могли бы использовать in_array() как предложено в комментариях, или слегка измените свой код, чтобы вы отменили цикл, когда вы нашли совпадение или когда цикл завершился без поиска, вы видите «Нет совпадения»

Быть осторожен: in_array() не проверяет подстановки, как вы хотите, но только для целых названий фильмов.

 $movie_title = get_the_title();
$movies = simplexml_load_file('http://www.kolosej.si/spored/xml/2.0/');

foreach($movies as $movie) {

$movie_list = $title=$movie->title;

if((strpos($movie_list, $movie_title)) !== false) {
echo $original_title=$movie->original_title . '<br>';
echo $description=$movie->plot_outline;
$found = true;
break;
}
}
if(!$found)
echo "Not found!";
0

замените свой код следующим кодом

<?php
$movie_title = get_the_title();
$movies = simplexml_load_file('http://www.kolosej.si/spored/xml/2.0/');
$array_m =  (array) $movies ;

if(in_array($movie_title,array_column($array_m,'title')))
{
echo $original_title=$movie->original_title . '<br>';
echo $description=$movie->plot_outline;

}
else
{
echo 'No match!';
}
?>
0
По вопросам рекламы [email protected]