Question

J'utilise simpleXML et je veux que l'alimentation en boucle pour afficher uniquement 5 montre en utilisant la méthode de la position (), mais ont pas de joie dans la faire fonctionner

foreach($xml->sortedXPath('TV[position() < 5 and ProgrammeName="MTV"]', 'TransmissionDate', SORT_DESC) as $i => $item)
{

    print "<a href='?v=".$item->ID."&a=false' class='link'>\n";
    print "\t<span class=\"text\">" .trunc($item->ShortSynopsis,25, " "). "</span>\n";
    print "\t</a>";
}

des suggestions sur la façon dont je peux obtenir ce travail

ce sont les données XML Je travaille avec

http://deniselashlley.co.uk/test/data.xml

Pas de solution correcte

Autres conseils

Cela se sent comme un rediffuser, mais quand même ...

NiseNise veut trier les nœuds puis garder le top 5. Le problème est que cette expression XPath sélectionne les 5 premiers noeuds dans le document, la méthode les trie. Ce que vous devez faire est une sorte tous les nœuds alors que le premier processus 5.

foreach($xml->sortedXPath('TV[ProgrammeName="MTV"]', 'TransmissionDate', SORT_DESC) as $i => $item)
{
    if ($i > 5)
    {
        break;
    }

    print "<a href='?v=".$item->ID."&a=false' class='link'>\n";
    // etc...
}

J'ai oublié de mentionner, sortedXPath() ne fait pas partie de SimpleXML, il fait partie d'un extension SimpleXML , d'où le rebouclage,.

Avez-vous pensé que votre boucle commencera à item[0]? Alors $i > 5 Affichera les 6 premiers noeuds parce que le nombre commencerait à point 0. Il suffit de changer à $i > 4 et qui devrait résoudre votre problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top