PHP 检查数组匹配条件中的值然后回显该特定值

PHP check value in array match conditions then echo out that specific values

我正在尝试显示 XML 列表中与 post 标题匹配的电影信息。

$movie_title是电影名的变量

现在我有两个问题:

我也想知道是否有更好的方法来做到这一点。

$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!';
    }
}

用以下代码替换您的代码

<?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!';
}
?>  

这可行,方法是在您实际找到匹配的电影标题时设置 $found,如果未设置 $found 则只输出 No Match

<?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(),或者稍微更改您的代码,以便您取消循环,当您找到匹配项时,或者当循环完成但没有找到匹配项时,您会显示 "No match"

小心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!";