Я парсю большой XML архив со множеством итемов.
Допустим я получаю отдельную строку так:
echo $item->cat[0]->title;
но вот таких вот cat у меня имеется 100 штук.
Я задумался над автоматизацией вывода всех титлов архива путем
бесконечного while в конце каждого из которых к cat[0] будет прибавлятся еденица.
Но вот в чем загвоздка - во первых я не знаю как это собственно сделать.
А во вторых - мне надо както остонавить while если null(cat[$n]) .
Есть ли какие нибудь более цивилозованые способы кроме вайла, и если нет, как можно осуществить увеличение значения и остановку вайла?
Спустя 7 минут, 15 секунд (17.08.2011 - 19:27) neadekvat написал(а):
Че-т я не понял. Если нужно перебрать массив, то используй foreach:
Если нужно что-то другое - опиши подробнее.
foreach($item->cat as $val)
echo $val->title;
Если нужно что-то другое - опиши подробнее.
Спустя 4 минуты, 11 секунд (17.08.2011 - 19:31) Agahnim написал(а):
$sxml = simplexml_load_file('whatever.url.i.whant') or die('Could not load file');
foreach ($sxml->channel as $item) {
$yid1 = mb_substr($item->item[0]->guid, 42, 300, 'UTF-8');
echo "<table border='0'><tr><td><img width='90' src='vi/$yid1/0.jpg'></td><td>";
echo '<font size="4"><b><a target="_blank" href="' , $item->item[0]->link , '">', $item->item[0]->title ,'</a></b></font><br>';
echo '<font size="2">',$item->item[0]->description,'</font><br>';
echo '<font size="1" color="grey">',$item->item[0]->pubDate,'</font></td></tr></table><hr>';
echo "<iframe width='100%' height='349' src='ed/$yid1' frameborder='0' ></iframe>";
echo '<br>';
$yid2 = mb_substr($item->item[1]->guid, 42, 300, 'UTF-8');
echo "<table border='0'><tr><td><img width='90' src='vi/$yid2/0.jpg'></td><td>";
echo '<font size="4"><b><a target="_blank" href="' , $item->item[1]->link , '">', $item->item[1]->title ,'</a></b></font><br>';
echo '<font size="2">',$item->item[1]->description,'</font><br>';
echo '<font size="1" color="grey">',$item->item[1]->pubDate,'</font></td></tr></table><hr>';
echo "<iframe width='100%' height='349' src='ed/$yid2' frameborder='0' ></iframe>";
echo '<br>';
# ... +100
}
а теперь представим что мне таким образом нужно вывести 100 айтемов. Нужны способы автоматизации. Так понятнее?
Тоесть -
while ($sxml) {
$yid1 = mb_substr($item->item[$n]->guid, 42, 300, 'UTF-8');
echo "<table border='0'><tr><td><img width='90' src='http://i.ytimg.com/vi/$yid1/0.jpg'></td><td>";
echo '<font size="4"><b><a target="_blank" href="' , $item->item[$n]->link , '">', $item->item[0]->title ,'</a></b></font><br>';
echo '<font size="2">',$item->item[$n]->description,'</font><br>';
echo '<font size="1" color="grey">',$item->item[$n]->pubDate,'<nt></td></tr></table><hr>';
echo "<iframe width='100%' height='349' src='http://www.youtube.com/embed/$yid1' frameborder='0' ></iframe>";
echo '<br>';
}
с каждым проходом вайла увеличивая $n на один.
Спустя 2 минуты, 50 секунд (17.08.2011 - 19:34) neadekvat написал(а):
И чем не подходит foreach (да, второй, вложенный)?
Спустя 2 минуты, 6 секунд (17.08.2011 - 19:36) Agahnim написал(а):
тем что у меня не 1 cat а 100
cat[1]
cat[2]
cat[3]
...
cat[99]
cat[100]
cat[1]
cat[2]
cat[3]
...
cat[99]
cat[100]
Спустя 2 минуты, 11 секунд (17.08.2011 - 19:38) Agahnim написал(а):
Так, туплю. Спасибо.
Спустя 34 секунды (17.08.2011 - 19:39) neadekvat написал(а):
Так и что меняется то?
Ну дай-то бог)
foreach ($sxml->channel as $item) {
foreach($item as $iteme_2) {
$yid = mb_substr($iteme_2->guid, 42, 300, 'UTF-8')''
echo "<table border='0'><tr><td><img width='90' src='vi/"$yid"/0.jpg'></td><td>";
echo '<font size="4"><b><a target="_blank" href="' , $iteme_2->link , '">', $iteme_2->title ,'</a></b></font><br>';
echo '<font size="2">',$iteme_2->description,'</font><br>';
echo '<font size="1" color="grey">',$iteme_2->pubDate,'</font></td></tr></table><hr>';
echo "<iframe width='100%' height='349' src='ed/$yid' frameborder='0' ></iframe>";
echo '<br>';
}
}
Ну дай-то бог)
Спустя 3 минуты, 8 секунд (17.08.2011 - 19:42) Agahnim написал(а):
Сказал же - туплю. Спасибо.
Спустя 2 минуты, 16 секунд (17.08.2011 - 19:44) neadekvat написал(а):
Цитата (Agahnim @ 17.08.2011 - 20:42) |
Сказал же - туплю. |
Я не за минуту написал пост - не удалять же его.
К тому же, форум тем полезен, что на темы выходят из поисковиков. Вы-то поняли, а вдруг придет кто-то, кто еще не понял. Посмотрет код - и поймет.