كيفية حلقة وعرض (N) تغذية باستخدام SimpleXML و position ()

StackOverflow https://stackoverflow.com/questions/2146182

سؤال

أنا أستخدم SimpleXML وأريد أن أحلق على الرغم من أن التغذية لعرض 5 عروض فقط باستخدام طريقة الموضع () ، ولكن ليس لدي فرح في العمل على العمل

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>";
}

أي اقتراحات حول كيف يمكنني الحصول على هذا العمل

هذه هي بيانات XML التي أعمل معها

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

لا يوجد حل صحيح

نصائح أخرى

هذا يبدو وكأنه إعادة نشر ، ولكن على أي حال ...

يريد Nisenise فرز العقد ثم الاحتفاظ بالرجوع إلى 5. المشكلة هي أن تعبير XPath هذا يحدد العقد الخمسة الأولى في المستند ، ثم تقوم الطريقة بفرزها. ما عليك فعله هو الفرز الكل العقد ثم معالجة فقط 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...
}

نسيت أن أذكر، sortedXPath() ليس جزءًا من SimpleXML ، إنه جزء من أ مكتبة تمديد SimpleXML, ، وبالتالي إعادة إعادة.

هل فكرت في أن حلقتك ستبدأ في item[0]؟ لذا $i > 5 سوف يخرج العقد الستة الأولى لأن العدد سيبدأ في البند 0. قم ببساطة بتغييره إلى $i > 4 وهذا يجب أن يصلح مشكلتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top