nur die letzten 3 bei foreach
analogbernd
- php
Hallo,
trotz meiner geringen PHP-Kenntnisse konnte ich mir mit einigem "belesen" folgenden Code zusammenbasteln.
Auszug:
$rss = fetch_rss($url);
foreach ( $rss->items as $item ) {
$published = parse_w3cdtf($item['dc']['date']);
if ( $published <= $date ) {
echo "<a href='" . $item['link'] . "'>" . $item['title'] . "</a>";
echo "<br><br>";
echo $item[description];
echo"<br>";
echo "Datum:" . substr($item[pubdate], 5, 12);
echo"<br>";
echo "<p>";
}
}
Ziel des Ganzen ist die Übernahme des Blog-Feeds in eine andere Webseite. Das funktioniert auch prima. Genauso wie ich es mir gewünscht habe, aber ich benötige nur die letzten 3-5 Blogartikel. Wie kann ich das erreichen?
In der Vorlage für diesen Schnipsel war das auf diese Art gelöst:
$items = array_slice($rss->items, 0, $num_items);
und stattdessen:
foreach ( items as $item ) {....usw
Warum auch immer funktionierte das leider nicht. Ob es an meinen PHP-Einstellungen liegt, weiß ich nicht. Ich kann diese leider nicht beeinflussen. (Shared)
Aber vielleicht lässt sich obiger Codeschnipsel anpassen? Jemand eine Idee dazu?
Vielen Dank.
Hallo!
foreach ( items as $item ) {....usw
Ist nach allgemeinem Ermessen wohl ein Fehler, soweit es PHP betrifft, denn Variablen ohne vorgestelltes "$" sind darin verboten.
Gruß, LX
Hallo!
foreach ( items as $item ) {....usw
Ist nach allgemeinem Ermessen wohl ein Fehler, soweit es PHP betrifft, denn Variablen ohne vorgestelltes "$" sind darin verboten.Gruß, LX
Vielen Dank fürs Augen öffnen. Das war der richtige Weg. Da hab ich beim ändern wohl das "$" gelöscht ;)
Danke
Hello,
ohne, dass ich mir näher anschaue, um was es geht...
Zur einer Aufgabenstellung:
Wie bekommt man die letzten Drei Einträge aus einem _assoziativen_ Array in PHP?
Man drehe das Array um
http://www.php.net/manual/de/function.array-reverse.php
baue eine foreach()-Schleife auf
http://www.php.net/manual/de/control-structures.foreach.php
Kopiere die Treffer (Keys reicht vollkommen) in ein neues Array
lasse einen Zähler mitlaufen
und breche mit dessen Hilfe die foreach()-Schliefe nach der gewünschten Anzahl ab
Drehe das Indexarray auch wieder um
und nimm es in einer weiteren foreach()-Schleife als Index-Register für den Zugriff auf das Original-Array.
Alternativ kann man das Ganze auch mit Array_pop
http://www.php.net/manual/de/function.array-pop.php
oder mit Array_slice
http://www.php.net/manual/de/function.array-slice.php
versuchen.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hallo
oder mit Array_slice http://www.php.net/manual/de/function.array-slice.php versuchen.
Ich denke, dass diese Lösung mit einer vorhergehenden Prüfung, ob das Array mehr als 5 Elemente hat, die einfachste wäre. Keine Schleife, keine Prüfung in der Schleife ...
$anzahl_eintraege = 5;
if (count($array)>$anzahl_eintraege) {
$array = array_slice($array,-$anzahl_eintraege);
}
Tschö, Auge
Hello,
oder mit Array_slice http://www.php.net/manual/de/function.array-slice.php versuchen.
Ich denke, dass diese Lösung mit einer vorhergehenden Prüfung, ob das Array mehr als 5 Elemente hat, die einfachste wäre. Keine Schleife, keine Prüfung in der Schleife ...
$anzahl_eintraege = 5;
if (count($array)>$anzahl_eintraege) {
$array = array_slice($array,-$anzahl_eintraege);
}
Ich habe es extra nicht in den Vordergrund gestellt, weil man sich bei älteren PHP-Versionen eben noch selber helfen muss:
"Beachten Sie, dass array\_slice() nach Vorgabe numerische Schlüssel
des Arrays zurücksetzt. Seit PHP 5.0.2 können Sie dieses Verhalten
ändern, indem Sie preserve\_keys auf TRUE setzen."
Das wäre dann bei einem Array, dessen Schlüssel man im Originalzustand benötigt, weil z.B. die IDs der Datensätze drinstehen, ein KO-Kriterium für ein Array-slice auf einem älteren PHP.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>
Hallo
Ich denke, dass diese Lösung mit einer vorhergehenden Prüfung, ob das Array mehr als 5 Elemente hat, die einfachste wäre. Keine Schleife, keine Prüfung in der Schleife ...
$anzahl_eintraege = 5;
if (count($array)>$anzahl_eintraege) {
$array = array_slice($array,-$anzahl_eintraege);
}
>
> Ich habe es extra nicht in den Vordergrund gestellt, weil man sich bei älteren PHP-Versionen eben noch selber helfen muss:
>
> "Beachten Sie, dass array\_slice() nach Vorgabe numerische Schlüssel
> des Arrays zurücksetzt. Seit PHP 5.0.2 können Sie dieses Verhalten
> ändern, indem Sie preserve\_keys auf TRUE setzen."
>
> Das wäre dann bei einem Array, dessen Schlüssel man im Originalzustand benötigt, weil z.B. die IDs der Datensätze drinstehen, ein KO-Kriterium für ein Array-slice auf einem älteren PHP.
Woher stammen denn die Schlüssel? Entweder sie sind mit dem Eintrag fest verknüpft, also mitgespeichert und somit ein Feld des Arrays, dann ist das auch kein Problem, oder sie sind, wie im Falle des Auslesens der Datei mit [file](http://www.php.net/file), nutzlos, da sie sich verändern, sobald ein Eintrag aus der Datei gelöscht wird. Dessen sollte man sich bewusst sein, was dann bedingt, dass man, um die Anzeige der Datensätze zu steuern, den Datensätzen ein weiteres Feld für die Anzeige oder Sperrung verpasst.
Tschö, Auge
--
Die deutschen Interessen werden am Liechtenstein verteidigt.
[Veranstaltungsdatenbank Vdb 0.2](http://termindbase.auge8472.de/)
Hello,
Ich habe es extra nicht in den Vordergrund gestellt, weil man sich bei älteren PHP-Versionen eben noch selber helfen muss:
"Beachten Sie, dass array_slice() nach Vorgabe numerische Schlüssel
des Arrays zurücksetzt. Seit PHP 5.0.2 können Sie dieses Verhalten
ändern, indem Sie preserve_keys auf TRUE setzen."Das wäre dann bei einem Array, dessen Schlüssel man im Originalzustand benötigt, weil z.B. die IDs der Datensätze drinstehen, ein KO-Kriterium für ein Array-slice auf einem älteren PHP.
Woher stammen denn die Schlüssel?
die stammen z.B. aus einer Datenbank.
Ich habe ausdrücklich geschrieben:
"ohne, dass ich mir näher anschaue, um was es geht..."
und mich nur auf die Aufgabe bezogen:
"Wie bekommt man die letzten Drei Einträge aus einem _assoziativen_ Array in PHP?"
Und da spielt es eben eine Rolle, ob (assoziative) Schlüssel numerische Werte sind, oder nicht. Die werden nämlich dann leider in numerische Schlüssel umgewandelt und veschwinden somit bei den älteren Versionen von array_slice()
Auf mehr wollte ich hier gar nicht hinaus.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hallo
die stammen z.B. aus einer Datenbank.
Ich habe ausdrücklich geschrieben:
"ohne, dass ich mir näher anschaue, um was es geht..."und mich nur auf die Aufgabe bezogen:
"Wie bekommt man die letzten Drei Einträge aus einem _assoziativen_ Array in PHP?"Und da spielt es eben eine Rolle, ob (assoziative) Schlüssel numerische Werte sind, oder nicht. Die werden nämlich dann leider in numerische Schlüssel umgewandelt und veschwinden somit bei den älteren Versionen von array_slice()
Auf mehr wollte ich hier gar nicht hinaus.
Ähhm, da habe ich dich falsch verstanden, sorry.
Tschö, Auge
Hello,
Ähhm, da habe ich dich falsch verstanden, sorry.
Macht ja nix, denn die Problematik in der XML-Augabe von analogbernd ist ja trotzdem nicht unbedingt gelöst. Sie scheint mir aber ungenügend beschrieben zu sein.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg