- Home
- Categorie
- Coding e Sistemistica
- Coding
- controllare ciclo foreach di simplexml
-
controllare ciclo foreach di simplexml
Ciao a tutti, devo parsare un xml, lo faccio con simplexml e nessun problema, dovrei visualizzare solo le prime 5 ... come posso fare a mettere una condizione ?
[PHP]$feed_newsic ="http://xxx.it/ciao.xml";
$xml = simplexml_load_file($feed_newsic);
$total_news = count($xml->channel->item);
foreach($xml->channel->item as $item){
$titolo_newsic = $item->title; $pre_newsic = $item->description;
echo '<span class="titolo_newsic">'.$titolo_newsic.'</span><br>'.substr($pre_newsic,0,120).'<br>leggi tutto >';
}
[/PHP]
-
Usare un for ?
M.
-
Prova cosi:
[php]$feed_newsic ="http://xxx.it/ciao.xml";
$xml = simplexml_load_file($feed_newsic);
$total_news = count($xml->channel->item);
$i=0;
while ($i < 5 && list(, $item) = each($xml->channel->item)) {$titolo_newsic = $item->title; $pre_newsic = $item->description;
echo '<span class="titolo_newsic">'.$titolo_newsic.'</span><br>'.substr($pre_newsic,0,120).'<br>leggi tutto >';
$i++;
}
[/php]
-
Scusate, nulla da dire sull'uso del while, ma il FOR esiste proprio per fare queste cose. Usiamo gli strumenti giusti.
M.
-
Se hai solo 3 elementi utilizzando il ciclo for cicli comunque 5 elementi, per cui mi sembra meglio un foreach, in questo caso usando la via alternativa del foreach per prendere al massimo 5 elementi.
-
@Thedarkita said:
Se hai solo 3 elementi utilizzando il ciclo for cicli comunque 5 elementi, per cui mi sembra meglio un foreach, in questo caso usando la via alternativa del foreach per prendere al massimo 5 elementi.
Ciao, quello che dici tu è corretto se non sapessi quanti elementi ho, ma dal primo post si legge "dovrei visualizzare solo le prime 5" , quindi vuole dire che almeno 5 elementi li hai. Poi se "dovrei visualizzare solo le prime 5" vuole dire "dovrei visualizzare solo le prime 5 o meno nel caso non ne esistano 5" allora è tutta un'altra cosa e basta un if con un break dentro al foreach.
M.
-
Vi ringrazio per le risposte, ho provato con il codice contenente il ciclo while ma non vengono estratti i dati... praticamente me ne stampa 5 ma vuote...
-
@ziobudda said:
Ciao, quello che dici tu è corretto se non sapessi quanti elementi ho, ma dal primo post si legge "dovrei visualizzare solo le prime 5" , quindi vuole dire che almeno 5 elementi li hai. Poi se "dovrei visualizzare solo le prime 5" vuole dire "dovrei visualizzare solo le prime 5 o meno nel caso non ne esistano 5" allora è tutta un'altra cosa e basta un if con un break dentro al foreach.
M.
Io ne ho più di 5, il massimo sarebbe visualizzarne 5 random tra quelle inviate, ma mi basterebbe contarne solo 5 ....
-
allora usa un for.
M.
-
@ziobudda said:
allora usa un for.
M.
Ciao, scusa ma puoi darmi un aiuto in più ? altrimenti non l'avrei chiesto.. ad ogni modo avevo provato ad inserire il foreach dentro ad un for e non funzionava....
-
for ($i=0;$i<5;$i++) { $item = $xml->channel->item*; $titolo_newsic = $item->title; $pre_newsic = $item->description; echo '<span class="titolo_newsic">'.$titolo_newsic.'</span><br>'.substr($pre_newsic,0,120).'<br>leggi tutto >'; }
Prova un po' così.
M.
-
Ciao ziobudda, come mi hai suggerito te funziona tutto.
Ti ringrazio!
-
Scusa, riesci ad inserire in post un pezzo di quell'albero xml ?
Usa var_dump($xml->channel->item);
Per capire dove si sbaglia.
M.
-
Ciao ziobudda, ho modificato il post precedente, funziona come tu mi hai suggerito. Adesso devo solo farmi modificare xml perchè l'immagine non ha un proprio tag, altrimenti dovrei parsare tutto ed escludere l'immagine che dovrei croppare.
Ti ringrazio e mi scuso!