2016-04-11 4 views
0

J'essaie d'afficher des informations de film de la liste XML qui correspond à titre de poste. est la variable du nom du film.PHP vérifie la valeur dans les conditions de correspondance de tableau puis répercute sur les valeurs spécifiques

Maintenant, j'ai 2 problèmes: « Aucun résultat »

  • Si le titre ne correspond pas à then autre se fera l'écho des pour chaque mouvement qui ne correspond pas à la condition de l'instruction if. Comment limiter les résultats uniquement sur le premier film correspondant au titre.

Je me demande également s'il y a une meilleure façon de le faire.

$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

Au lieu de '' essayer foreach' in_array() '' – Apoorv

+0

if (in_array (MOVIE_TITLE $, $ films)) {// code de réussite} else {echo "No Match";} ' –

+0

@Manjeet Barnala pourriez-vous s'il vous plaît faire un exemple de travail? J'ai des erreurs. – Mukos

Répondre

1

Cela fonctionnerait, en définissant un $found lorsque vous trouvez en fait un titre de film correspondant et seulement à sortir un No Match si le $found est pas défini

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

Génial, ça marche! Merci pour votre temps @RiggsFolly – Mukos

+0

Mon plaisir vieux chap – RiggsFolly

0

remplacer votre code avec le code suivant

<?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

Ne trouve rien – RiggsFolly

+0

Y at-il quelque chose de mal ?? Cher @RiggsFolly –

+0

Cela ne fonctionne pas, pourriez-vous s'il vous plaît résoudre ce problème. Ce serait génial de voir comment in_array fonctionne. – Mukos

0

Vous pouvez utiliser in_array() comme suggéré dans les commentaires, ou modifier légèrement votre code, de sorte que vous annulez la boucle, lorsque vous avez trouvé une correspondance, ou lorsque la boucle terminée sans en trouver un, vous affichez « Aucune correspondance »

Soyez prudent: in_array() ne vérifie pas substings, comme vous voulez, mais seulement pour les titres de films entiers .

$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

Merci @chillichief J'aime vraiment votre idée! – Mukos