كيفية حلقة وعرض (N) تغذية باستخدام SimpleXML و position ()
سؤال
أنا أستخدم 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 التي أعمل معها
لا يوجد حل صحيح
نصائح أخرى
هذا يبدو وكأنه إعادة نشر ، ولكن على أي حال ...
يريد 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
وهذا يجب أن يصلح مشكلتك.