rand () перемешать вывод xml

Я создал файл XML с несколькими элементами, как в примере ниже:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://www.example.com/index.php?pagina=video-categories</id>
<title><![CDATA[Example.com Categories RSS]]></title>
<author>
<name>Example.com</name>
<email>[email protected]</email>
</author>
<updated></updated>
<link rel="alternate" href="http://www.example.com/categories"/>
<subtitle><![CDATA[HQ example videos in any category]]></subtitle>
<rights>Copyrights reserved. Feel free to use the embed function.</rights>
<item>
<categoryname><![CDATA[100 Latest Videos]]></categoryname>
<shortcategoryname><![CDATA[100 New Sex Clips]]></shortcategoryname>
<categoryurl>http://www.example.com/1.html</categoryurl>
<categoryimage>http://www.example.com/12347.jpg</categoryimage>
</item>
<item>
<categoryname><![CDATA[100 Latest Videos]]></categoryname>
<shortcategoryname><![CDATA[100 New Sex Clips]]></shortcategoryname>
<categoryurl>http://www.example.com/2.html</categoryurl>
<categoryimage>http://www.example.com/12346.jpg</categoryimage>
</item>
<item>
<categoryname><![CDATA[100 Latest Videos]]></categoryname>
<shortcategoryname><![CDATA[100 New Sex Clips]]></shortcategoryname>
<categoryurl>http://www.example.com/3.html</categoryurl>
<categoryimage>http://www.example.com/12345.jpg</categoryimage>
</item>
... and more items ...
</feed>

У меня есть следующий код с выводом всех ссылок из файла XML

     <?php
$html = ""; // var full of emptyness
$url = "http://www.example.com/categories.xml";
$xml = simplexml_load_file($url);
for($i = 0; $i < 35; $i++){ // Number of category here, I use a lower number at this moment...
$categoryname = $xml->item[$i]->categoryname;
$shortcategoryname = $xml->item[$i]->shortcategoryname;
$categoryurl = $xml->item[$i]->categoryurl;
$html .= '<a class="purplewidebutton" href="' . $categoryurl . '" title="' . $categoryname . '">' . $shortcategoryname . '</a>';
}
echo $html;
?>

Я хотел бы показать только 6 ссылок и сделать их положение наиболее подходящим из канала XML. Я хотел бы иметь случайные ссылки из элементов XML. что я должен добавить или изменить и я должен использовать rand() или же shuffle() повторить 6 случайных ссылок?

Php-код — это то, что я использую в данный момент для отображения некоторых ссылок, но это не случайно …

1

Решение

$xml->item это массив, так shuffle это, а затем получить первый 6, что-то вроде:

shuffle($xml->item);

foreach(array_slice($xml->item, 0, 6) as $item) {
$categoryname = $item->categoryname;
$shortcategoryname = $item->shortcategoryname;
$categoryurl = $item->categoryurl;
$html .= '<a class="purplewidebutton" href="' . $categoryurl . '" title="' . $categoryname . '">' . $shortcategoryname . '</a>';
}
echo $html;

Или с текущим кодом вы можете хранить HTML в массиве в цикле:

$html[] = '<a class="purplewidebutton" href="' . $categoryurl . '" title="' . $categoryname . '">' . $shortcategoryname . '</a>';

И после цикла:

shuffle($html);
echo implode("\n", array_slice($html, 0, 6));
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]