PhpmonkeysPHP und SecondLife (24.8.2010, 12:34 UTC)

Das ehemals hochgelobte virtuelle Leben in Form von Second Life ™ ist in der Presse inzwischen eher untergegangen, aber genau wie Asterix und Obelix gibt es immer noch eine Menge Leute, die diese Welt nutzen. Viele Neulinge nehmen am Leben im Second Life passiv Teil. Dies kann man aber auch sehr aktiv gestalten und im Gegensatz zu einem 3D-Spiel (wie bspw. einem MMORPG) kann man neue Dinge selbst erstellen. Diese Dinge möchte man manchmal aus der abgeschirmten Welt von SL ausbrechen lassen. Kommunikation über die Grenzen von Second Life heraus ist daher heute das Thema.

Als Beispiel möchten wir die Systemlast eines Servers im SecondLife Chat-Fenster ausgegeben. Hierfür benötigt man auf Serverseite ein kleines PHP Script, das die Systemlast vorformatiert zurückliefert. Dieser Code sieht bspw so aus:

?View Code PHP
1
2
3
4
5
6
function myNF($key) {
	return number_format($key,2);
}
 
$load = sys_getloadavg();
echo join('|',array_map("myNF",$load));

Es wird die sys_getloadavg-Funktion benutzt, um an die Systemlast zu gelangen. Diese wird noch ordentlich formatiert und in einem String zusammengefasst, wobei das “Pipe”-Symbol als Separator dient. Auf der anderen Seite möchten wir die einzelnen Strings ja auch wieder trennen und dabei noch etwas lernen; namlich wie man ein explode in LSL realisiert.

Im SecondLife benötigt man neben einem Benutzerkonto auch einen Platz, auf dem man Objekte generieren kann. Die Rechteverwaltung lässt dies nämlich nicht überall zu. Am einfachsten nutzt man für solche Tests die dafür vorgesehenen Sandboxen, die man über die Suche von SL sehr leicht finden kann.

Man generiert sich hier nun ein 3D-Objekt, mit dem man anschließen das eigentliche Skript verknüpft. Das Skript, das die Anfrage an den Server stellt, ist in LSL geschrieben. LSL steht für Linden Scripting Language und ist die Skriptsprache, die innerhalb von SL dem Benutzer zugänglich gemacht wird.

Im Content des 3D-Objekts legt man nun ein neues Skript an und ersetzt den Beispielquelltext durch den folgenden Code:

?View Code LSL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Artikel gek: Lesen Sie den Rest hier (weitere 9276 Bytes)

Link
ebene7 » PHPEinfache UnitTests für Magento (24.8.2010, 05:00 UTC)
Seit nun knapp fünf Monaten stelle ich mich der Herausforderung saubere Softwareentwicklung und Magento in Einklang zu bringen. Ein kleiner Schritt in diese Richtung war der Einsatz von UnitTests, um mögliche Fehler während der Entwicklung schneller zu finden. Viele Fehler treten bei Magento schon durch eine fehlerhafte Konfiguration auf, was zur Folge haben kann, dass wir [...]
Link
der-webentwickler.netTypolight/ Contao: Passwort eines Users / Administrator in der Datenbank zurücksetzen (18.8.2010, 08:00 UTC)

Contao ehemals Typolight verwendet seit der Version 2.7 zusätzlich zur sha1 Verschlüsselung gesalzene Passwörter.
Hat man nun sein Passwort vergessen, oder möchte man dieses über die Datenbank zurücksetzen, ist das neu generieren nicht so einfach. Deshalb gibt es hier einen fertigen Code für ein verschlüsseltes Passwort, mit dem du dich ins Backend einloggen kannst.

8e0107bf1c7fbeef6538dff7173aa458e7dd585e:8c37627a0e2c606189e7765
Das Passwort im Klartext: reset123

Ändern kannst du den Code zum Beispiel über phpMyAdmin in der tabelle tl_user. Falls du dich davor öfters falsch eingeloggt hast, so dass dein Zugang gesperrt ist, setze auch die Datenbank-Felder "loginCount" und "locked" auf 3 und 0 zurück.

Link
Software-Entwickler BlogEine Liste aller Seiten mit webEdition (17.8.2010, 21:01 UTC)

Eine Liste über alle oder nur bestimmte Seiten auf seinem Webspace ist immer nützlich, z.B. als Sitemap, als Übersicht der neuesten 10 Seiten, für's RSS Feed oder oder oder.
Der Ablauf, wie man das ganze mit webEdition realisiert, ist im Prinzip immer der gleiche. Das Zauberwort bzw. we-Tag, welches man dazu braucht, nennt sich we:listview.

Mit einer we:listview erhält - mit einer der vielen "type"-Attribute - auch alle Dokumente, die einem bestimmten Filter entsprechen. Einzig zwingendes Attribut bei we:listview ist das "type"-Attribut, welches für den aktuellen Fall auf "document" gesetzt wird.

Eins vorweg: we:listview erfasst Dokumente nur unter zwei Bedingungen:
Entweder die Dokumente haben in den "Eigenschaften" das Attribut "durchsuchbar" gesetzt oder man setzt das Attribut searchable des we:listview auf "false".

Durchsuchbar vs. searchable
searchable ist der einfachste Fall, dabei werden allerdings alle Dokumente erfasst, die das entsprechende Feld "durchsuchbar" auf "False" haben. Das die Dokumente dieses Attribut nicht gesetzt haben, dürfte der normalfall sein. Dageben findet "searchable=true" nur Dokumente, die das entsprechende Feld auch gesetzt haben.
Nun das für und wieder:
Im Fall "searchable=false" erfasse ich alle Dokumente und kann mit setzen der Eigenschaft "durchsuchbar" ein Dokument von der Suche ausnehmen. Sinnvoll, wenn nur wenige Dokumente _nicht_ in der Suche erscheinen sollen.
Im anderen Fall kann ich exakt steuern, welche Dokumente gefunden werden dürfen.
Welches von beiden man wählt kommt auf den Anwendungsfall an.

Filter nach Typ
Will man nur bestimmte Dokumenttypen erfassen - die we:listview benennt Dokumente nicht nur nach webEdition Dokumenten, sondern auch Bilder usw.; ein we:listview Dokument ist etwas, was physikalisch auf dem Server liegt - dann muss man "contenttypes" setzen. Im Falle von "neueste 10 Seiten" oder "Sitemap" setzt man dies auf "text/webedition". Dann erfasst man alle Seiten, die man auch mit webEdition erstellt hat und bearbeiten kann.

Filtern nach Verzeichnissen
Manchmal möchte man nicht "alles zeigen", sondern nur Seiten aus bestimmten Verzeichnissen. Dann gibt man die ID der Verzeichnisse einfach im Attribut "workspaceID" als komma-separierte Liste an. Möchte man zusätzlich noch Unterverzeichnisse einbeziehen, dann muss das Attribut "recursive" auf "true" gesetzt werden.

Startpunkt und Anzahl der Links
Schön zum begrenzen der angezeigten Links: "rows" und "offset".
Mit "rows" legt man fest, wieviele Treffer gezeigt werden, mit "offset" bestimmt man ... nunja, den offset halt. Diese Einstellungen werden für z.B. für eine Blätterfunktion genutzt, der interessierte Leser liest dazu bitte das Beispiel auf der Referenzseite an und sieht bei den Tags "we:listviewPageNr", "we:listviewPages", "we:next", "we:ifNext", "we:back" und "we:ifBack" nach.

Sortierreihenfolge und -richtung
Braucht man eine Sortierreihenfolge, dann setzt man "order" auf einen dieser Werte:
random() -> Zufällige ausgabe
we_creationdate -> Erzeugungsdatum
we_filename -> Dateiname
we_id -> Die ID
we_published -> Wann veröffentlicht
we_moddate -> Zuletzt geändert

Normalerweise werden die Einträge aufsteigend sortiert, benötigt man absteigende Sortierung, setzt man "desc" auf "true" (z.B. für die neuesten Seiten wichtig).

Weiteres
we:lisview bietet noch viele weitere Optionen, die ich selbst bisher nicht gebraucht habe und für dieses Beispiel einfach zu viel sind. Ich bitte den geneigten Leser, mal in der Doku zu we:listview nach zu schlagen ... auch wenn diese bisweilen nicht so ergiebig ist, wie man es sich oft wünschen würde.

we:repeat und we:field
Um durch die Treffer zu iterieren, benötigen wir das we-Tag we:repeat, dass dann von "offset" bis "rows" die Treffer der Reihe nach ausgibt. Die Informationen zu den Treffern findet man in we:field, über dessen Attribute kommt man dann an alles, was benötigt wird.

Ein Beispiel
Auf einer meiner Seiten gebe ich die 5 Dokumente aus, die ich mit webEdition veröffentlicht habe, allerdings dürfen diese nur in bestimmten Verzeichnissen liegen und müssen dazu noch das Attribut "durchsuchbar" gesetzt haben. So kann ich ganz genau steuern, welches Dokument dort auftaucht und welches nicht. Dieser Ausschnitt hier ist 1:1 und liegt in einem Temp

Artikel gek: Lesen Sie den Rest hier (weitere 1394 Bytes)

Link
dotfly blogEine neue Bewegung - Kinect für die Xbox 360 getestet (17.8.2010, 20:05 UTC)

Was Sony bei seiner Playstation mit dem EyeToy versucht hat, Nintendo wohl dazu gebracht hat, bei Handcontrollern zu bleiben, scheint Microsoft mit Kinect gelungen zu sein. Ich hatte vor Beginn der gamescom die Möglichkeit, Kinect zu testen.

Wer jetzt nicht weiß, um was es sich bei Kinect handelt, dem sei nur kurz und knapp gesagt: Es ist mehr oder weniger eine Kamera, die, an eine XBox 360 angeschlossen, die Bewegungen des Spielers oder der Spieler wahrnimmt und auf die Charaktere der Spiele überträgt.

Nach dem ich schon einige Videos von Präsentationen von „Project Natal“ – so der frühere Name – gesehen habe, habe ich mich gefragt, wie genau dieses System sein kann. Uneinheitliche Kleidung, zu viel Bewegung im Hintergrund, dunkles oder ungleichmäßiges Licht, kann einem optischen Empfänger ganz schön Arbeit machen. Das hat mir schon Sony’s EyeToy gezeigt. Meist wurden nur die Hände wahrgenommen und die Bewegungen waren ruckelig und beschwerlich.

Trotz des schlechten, Wetters wurde ein 50-Zoll-TV samt XBox 360 und Kinect, auf dem obersten Parkdeck der Galeria Kaufhof in Köln, aufgebaut. Nach den Hostessen, die für die gamescom vorbereitet wurden, war ich auch schon einer der ersten Spieler, die ein Spiel testen durften. Weil man sich nicht entscheiden konnte, was man spielen will – es könnte daran gelegen haben, dass niemand wusste, was es für Spiele gibt – wurde uns dann „Dance Central“ vorgeführt.

image

Nachdem wir es schafften nicht zu „Pokerface“ tanzen zu müssen, ließ ich – alleine gelassen – zu „Funky time“ meine Hüften kreisen. Und das im wahrsten Sinne des Wortes. Denn Kinect registriert 24 kritische Punkte des Körpers, die es dem System erlauben, auch das Hin- und Herschwingen der Hüfte zu erkennen. Die Fernsehkamera von center.tv machte es nicht gerade angenehmer, aber im Nachhinein, war das Tanzspiel wohl prädestiniert dafür zu zeigen, was das Auge der XBox 360 so alles kann.

Ich war sehr skeptisch, ob die Bewegungen alle korrekt und zeitnah erkannt und umgesetzt werden, doch diese Skepsis verflog bald. Das System schien mir noch im Beta Stadium zu sein, wie man an Kryptischen Schriftzeigen oder Platzhaltern sehen konnte, aber Umsetzung lief ziemlich flüssig.
Man konnte nicht einfach mit irgendeinem Arm wedeln oder rumhüpfen. Jeder Arm und jedes Bein wurde getrennt voneinander umgesetzt und gewertet. Sogar nach Drehungen auf der Stelle.

image

Man merkt kinect bei den ersten gezeigten Spielen „Kinect Adventures“ usw. an, dass es auf das Wohnzimmer-Party-Publikum zielt, aber genau das wurde gut umgesetzt. Während eines Spiels zu zweit ist es einem Spieler möglich, das Level – in diesem Fall eine Raftingtour – zu verlassen und später wieder einzusteigen. In der Zwischenzeit fährt der zweite Spieler alleine weiter.
Und genau dieses Wechseln und frühere Controller weitergeben, auf einer Party, wo ein Kommen und gehen herrscht, ist nun möglich. Ganz ohne das Spiel zu pausieren und warten zu müssen.

Kinect für die XBox 360 ist auf jeden Fall partytauglich und die Spiele machen echt Spaß. Gerne hätte ich noch Sportspiele gesehen wie Tai Chi, aber eventuell habe ich da später nochmal die Möglichkeit zu. Bleibt nur abzuwarten, wie der Konkurrent Sony mit seinem Move Controler mitziehen will. Denn hier schwenkt man eine Art leuchtende Eiskugel in der Waffel herum.

Link
dotfly blogEine neue Bewegung - Kinect für die Xbox 360 getestet (17.8.2010, 20:05 UTC)

Was Sony bei seiner Playstation mit dem EyeToy versucht hat, Nintendo wohl dazu gebracht hat, bei Handcontrollern zu bleiben, scheint Microsoft mit Kinect gelungen zu sein. Ich hatte vor Beginn der gamescom die Möglichkeit, Kinect zu testen.

Wer jetzt nicht weiß, um was es sich bei Kinect handelt, dem sei nur kurz und knapp gesagt: Es ist mehr oder weniger eine Kamera, die, an eine XBox 360 angeschlossen, die Bewegungen des Spielers oder der Spieler wahrnimmt und auf die Charaktere der Spiele überträgt.

Nach dem ich schon einige Videos von Präsentationen von „Project Natal“ – so der frühere Name – gesehen habe, habe ich mich gefragt, wie genau dieses System sein kann. Uneinheitliche Kleidung, zu viel Bewegung im Hintergrund, dunkles oder ungleichmäßiges Licht, kann einem optischen Empfänger ganz schön Arbeit machen. Das hat mir schon Sony’s EyeToy gezeigt. Meist wurden nur die Hände wahrgenommen und die Bewegungen waren ruckelig und beschwerlich.

Trotz des schlechten, Wetters wurde ein 50-Zoll-TV samt XBox 360 und Kinect, auf dem obersten Parkdeck der Galeria Kaufhof in Köln, aufgebaut. Nach den Hostessen, die für die gamescom vorbereitet wurden, war ich auch schon einer der ersten Spieler, die ein Spiel testen durften. Weil man sich nicht entscheiden konnte, was man spielen will – es könnte daran gelegen haben, dass niemand wusste, was es für Spiele gibt – wurde uns dann „Dance Central“ vorgeführt.

image

Nachdem wir es schafften nicht zu „Pokerface“ tanzen zu müssen, ließ ich – alleine gelassen – zu „Funky time“ meine Hüften kreisen. Und das im wahrsten Sinne des Wortes. Denn Kinect registriert 24 kritische Punkte des Körpers, die es dem System erlauben, auch das Hin- und Herschwingen der Hüfte zu erkennen. Die Fernsehkamera von center.tv machte es nicht gerade angenehmer, aber im Nachhinein, war das Tanzspiel wohl prädestiniert dafür zu zeigen, was das Auge der XBox 360 so alles kann.

Ich war sehr skeptisch, ob die Bewegungen alle korrekt und zeitnah erkannt und umgesetzt werden, doch diese Skepsis verflog bald. Das System schien mir noch im Beta Stadium zu sein, wie man an Kryptischen Schriftzeigen oder Platzhaltern sehen konnte, aber Umsetzung lief ziemlich flüssig.
Man konnte nicht einfach mit irgendeinem Arm wedeln oder rumhüpfen. Jeder Arm und jedes Bein wurde getrennt voneinander umgesetzt und gewertet. Sogar nach Drehungen auf der Stelle.

image

Man merkt kinect bei den ersten gezeigten Spielen „Kinect Adventures“ usw. an, dass es auf das Wohnzimmer-Party-Publikum zielt, aber genau das wurde gut umgesetzt. Während eines Spiels zu zweit ist es einem Spieler möglich, das Level – in diesem Fall eine Raftingtour – zu verlassen und später wieder einzusteigen. In der Zwischenzeit fährt der zweite Spieler alleine weiter.
Und genau dieses Wechseln und frühere Controller weitergeben, auf einer Party, wo ein Kommen und gehen herrscht, ist nun möglich. Ganz ohne das Spiel zu pausieren und warten zu müssen.

Kinect für die XBox 360 ist auf jeden Fall partytauglich und die Spiele machen echt Spaß. Gerne hätte ich noch Sportspiele gesehen wie Tai Chi, aber eventuell habe ich da später nochmal die Möglichkeit zu. Bleibt nur abzuwarten, wie der Konkurrent Sony mit seinem Move Controler mitziehen will. Denn hier schwenkt man eine Art leuchtende Eiskugel in der Waffel zum.

Link
PHP Usergroup MunichIPC 2010 - Kartenverlosung (17.8.2010, 14:47 UTC)

Wie auch in 2009 sind wir als Medienpartner der IPC wieder an ein heißbegehrtes Exemplar einer Eintrittskarte gekommen.

Diese möchten wir natürlich nicht für uns behalten (also eigentlich möchten wir schon, aber wir sind mal nicht so) sondern an euch verteilen.

Aber ganz ohne Arbeit geht das natürlich nicht vonstatten, daher haben wir ein kleines Formular erstellt mit dem ihr uns mitteilen könnt auf was ihr euch an der IPC am meisten freut. (Nachtrag: Jetzt auch mit Name & Emailfeld, Entschuldigung, schlicht verplant)

Unter allen Einsendungen verlosen wir bis zum 01 September eine Karte für die IPC Hauptkonferenz und unter allen, die nicht als Gewinner gezogen werden, als Trostpflaster noch zwei Abos des PHP Magazins.

Yeah, denkt ihr euch jetzt!

Das will ich wohl meinen. Also ran ans Werk und lasst euch nicht lumpen. Jeder darf teilnehmen und wir bitten um Verbreitung des Gewinnspiels. 

Teilnahmebedingungen:

  • Mit der Einsendung übertragt ihr uns das Recht euren Text unbefristet zusammen mit eurem Namen hier im Blog zu veröffentlichen
  • Die Karte gilt nur für die Hauptkonferenz NICHT für den Workshop und ihr bekommt auch KEIN Netbook!
  • Wir behalten uns vor das Gewinnspiel jederzeit ohne Angaben von Gründen abzubrechen

Link
PhpmonkeysDas Iterator-Interface (17.8.2010, 14:26 UTC)

Diese Woche gibt es leider nur einen kurzen Artikel, da ich keinen vernünftigen Zugang ins Internet habe und somit meine Recherche-Möglichkeiten begrenzt sind. Darum betrachte ich heute kurz das Iterator-Interface. Da dieses Interface auch für PHP 5.3 wichtig ist, sollte dieses Interface dem interessierten Entwickler bekannt sein.

Das Interface stellt eine Möglichkeit bereit über eine Menge von Objekten zu iterieren. Ein Beispiel für eine Implementierung ist das array. In verschiedenen Projekten habe ich die Variante gesehen, dass die Objekte intern in einem Array verwaltet wurden. Sobald man über diese Objekte iterieren wollte, wurde das Array nach außen gegeben, damit man das foreach-Konstrukt nutzen konnte. Heutzutage sollte man lieber die Kapselung geschlossen lassen und das Iterator-Interface implementieren.

Als Beispiel entwickeln wir ein Objekt, dass mit einem String instanziiert wird und über das man anschließend mit foreach laufen kann. Es werden “Wörter” als einzelne Rückgabewerte betrachtet. Also wird der Eingabe-String an einem Whitespace bzw. Komma-Zeichen gesplittet. Die “WordObject”-Klasse muss nun das mehrfach angesprochene Iterator-Interface implementieren. Hierzu sind die Methoden rewind, current, key, next und valid zu implementieren.

?View Code PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class WordObject implements Iterator {
 
    private $innerArray;
    private $pointer = 0;
 
    public function __construct($inputstring) {
        $this->innerArray = preg_split("/[\s,]+/",  trim($inputstring));
    }
 
    public function current() {
        return $this->innerArray[$this->pointer];
    }
 
    public function key() {
        return $this

Artikel gek: Lesen Sie den Rest hier (weitere 8477 Bytes)

Link
LocalDev » PHPPHP: Warum count() im Schleifenkopf langsam ist und … [UPDATE] (16.8.2010, 21:41 UTC)

In den Kommentaren des ursprünglichen Artikels wurde zu Recht beanstandet, das der Vergleich zwischen for und foreach, so wie er dort beschrieben war, nicht richtig ist, da bei foreach Werte abgefragt werden, die bei den for Schleifen fehlten. Dieser korrigierte Artikel, behebt den Fehler.

Der Artikel wurde zusätzlich mit einem Kommentar zum Thema Optimierung versehen.

Vor ein paar Tagen berichtete ragtek davon, dass count() im Schleifenkopf unschön und ineffizient ist. Beidem kann ich nur zustimmen.

Aber warum ist das so?

Die Erklärung dazu ist einfach. Bei jedem Durchlauf wird count() aufgerufen und darüber die Anzahl der Elemente ermittelt. Überprüfen kann man das Verhalten mit einem kleinen Code Snippet:

<?php
class ArrayTest implements Countable
{
	public $intCountCall = 0;

	public function count()
	{
		$this->intCountCall++;
		return 100000;
	}
}

$objArrayTest = new ArrayTest();
for ($intI = 0; $intI < count($objArrayTest); $intI++)
{

}
echo($objArrayTest->intCountCall . " Aufrufe von count()");

Ergebnis:

100001 Aufrufe von count()

Bei näherer Betrachtung scheint es also logisch, dass diese Variante langsamer ist, als wenn man count() einmal aufruft und den Wert zwischenspeichert.

Ist foreach schneller?
In den Kommentaren wird erwähnt, dass die Verwendung von for und count() unnötig ist, da es ja foreach gibt. Aber ist es auch schneller?

Schauen wir uns erst einmal zwei for Schleifen mit count() und, der Vollständigkeit wegen, eine while Schleife mit list() und each() an.

<?php
$arrTest = range(1, 100000);

$intStart = microtime(true);
for ($intI = 0; $intI < count($arrTest); $intI++)
{
	$intKey = $intI;
	$mixValue = $arrTest[$intI];
}
echo(microtime(true) - $intStart . " Sekunden\n");

// ------------------------------------------------

$intStart = microtime(true);
$intCount = count($arrTest);
for ($intI = 0; $intI < $intCount; $intI++)
{
	$intKey = $intI;
	$mixValue = $arrTest[$intI];
}
echo(microtime(true) - $intStart . " Sekunden\n");

// ------------------------------------------------

$intStart = microtime(true);
reset($arrTest);
while (list($intKey, $mixValue) = each($arrTest))
{
	// Schlüssel und Wert müssen nicht extra ermittelt werden
}
echo(microtime(true) - $intStart . " Sekunden\n");

Die beiden ersten Schleifen tun dasselbe, jedoch mit dem Unterschied, dass bei der Zweiten der Wert von count() zwischengespeichert wird. Die while Schleife nutzt ein Konstrukt, das aus PHP3 bestens bekannt sein dürfte.

Ergebnis:

0.03216814994812 Sekunden
0.016403913497925 Sekunden
0.067880868911743 Sekunden

Das Ergebnis ist so, wie wir es erwartet haben. Die zweite for Schleife ist fast doppelt so schnell, als die erste Variante. Die while Schleife liegt mit dem zwei- bis vierfachen der Zeit abgeschlagen auf dem letzten Platz.

Im Code wird der Umstand berücksichtigt, das der Index im Bereich von 0 bis 99999 liegt. Bei einem assoziativen Array, oder einem Array mit Lücken im Index, könnte die Ermittlung von Schlüssel und Wert so aussehen:
	$arrCurrent = array_slice($arrTest, $intI, 1, true);
	$intKey = key($arrCurrent);
	$mixValue = current($arrCurrent);
	// Alternativ:
	// $intKey = key($arrNext);
	// $mixValue = current($arrNext);
	// next($arrNext);

Diese Konstruktion sorgt natürlich für weitere Verzögerungen, die while besser abschneiden lassen.

Nun machen wir das Gleiche mit einem foreach:

<?php
$arrTest = range(1, 100000);

$intStart = microtime(true);
foreach ($arrTest as $intKey => $mixValue)
{
	// Schlüssel und Wert müssen nicht extra ermittelt werden
}
echo(microtime(true) - $intStart . " Sekunden\n");

Ergebnis:

0.0097959041595459 Sekunden

Im Endergebnis haben wir mit foreach eine bessere Zeit erreicht, als mit einem for oder einer while Konstrukt.

Aber warum?
Lassen wir unser Array mit foreach durchlaufen, werd

Artikel gek: Lesen Sie den Rest hier (weitere 4468 Bytes)

Link
PHP Usergroup MunichDie besten PHP-Seiten (16.8.2010, 16:35 UTC)

Konkret hat mich der Artikel "Wissen, Hilfe, Witz & Code: Die besten PHP-Seiten" von Mirco Lang/nkp in der Internet Intern Ausgabe Juni-August 02/10 Seite 14 und 15 wieder dazu gebracht im Wiki der PHP UG Munich herum zu arbeiten. Warum? Ich versuche dort eine gute Linksammlung für einen PHP-Programmierer aufzubauen. Durch den Artikel sind so um die 12 neue Links hinzugefügt worden. Auf den Webseiten der neuen Links werden vor allem Tutorials, FAQs und ganz konkret Skripte angeboten.

Nun möchte ich hiermit die Gelegenheit ergreifen Werbung für die Linksammlung in unserem Wiki machen:

Ich will in der nächsten Zeit mehr Links im Bereich Frontenddeveloping finden. Gerne nehme ich von Anderen Tipps mit neuen, besseren, interessanteren Links für alle 4 Bereiche der Linksammlung entgegen!

Link
LinksRSS 0.92   RDF 1.
RSS 2.0 Feed   RDF 1.
100% Planet PHP   PHP5 powered
PEAR powered  
Code wird von Planet-PHP zur Verfügung gestellt. Vielen Dank.