Я пытаюсь отобразить информацию о фильме из списка 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!';
}
}
Это будет работать, установив $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!';
}
Вы могли бы использовать 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!";
замените свой код следующим кодом
<?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!';
}
?>