PHP 检查数组匹配条件中的值然后回显该特定值
PHP check value in array match conditions then echo out that specific values
我正在尝试显示 XML 列表中与 post 标题匹配的电影信息。
$movie_title
是电影名的变量
现在我有两个问题:
如果标题不匹配,则 else 语句将为每个不匹配 if 语句条件的移动回显 "No match!"。
如何将结果限制在第一部与标题匹配的电影上。
我也想知道是否有更好的方法来做到这一点。
$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!";
我正在尝试显示 XML 列表中与 post 标题匹配的电影信息。
$movie_title
是电影名的变量
现在我有两个问题:
如果标题不匹配,则 else 语句将为每个不匹配 if 语句条件的移动回显 "No match!"。
如何将结果限制在第一部与标题匹配的电影上。
我也想知道是否有更好的方法来做到这一点。
$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!";