Verwendung der php-variable $_ (dollar-Zeichen gefolgt von einem Unterstrich)
Ist, dass wirklich wahr, dass ich verwenden können $_
als dummy-variable in foreach
Schleife, wenn es keine Notwendigkeit für $value
im foreach($array as $key => $value)
? Ich konnte nicht finden alle nützlichen Informationen, die nachweist, dass diese außer PHP-syntax formatieren.
Es ist ein besonderer Fall für foreach-Schleifen wird der Wert nicht verwendet
innerhalb der Schleife. In diesem Fall wird die dummy-variable $_ (Unterstrich) ist
verwendet:
foreach ($GLOBALS['TCA'] as $table => $_) { //Do something with $table }
Dies geschieht aus performance-Gründen, da er schneller ist als der Aufruf
array_keys() und Schleife auf das Ergebnis.
- nehmen weniger Zeit zum testen als Fragen
- Haben Sie versucht
foreach(array_keys($GLOBALS['TCA']) as $table)
? Zugegeben, es ist wahrscheinlich weniger ressourcenintensiv ist einfach nur die ungenutzten Werten zu Variablen. - Ich habe eigentlich eine
array($key => $arrayforlateruse, ... , ...)
.$arrayforlateruse
ist die variable nicht gebraucht jetzt. Jetzt weiß ich, dass die Platzierung$_
stattdessen hat keinen Effekt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
"_" ist ein Gültiger Variablenname Charakter, so können Sie es verwenden, wie jede andere variable und hat keine Besondere Bedeutung; dies ist nicht Perl.
wird die Ausgabe "Hello, World "foo" als erwartet. Auch,
wird die Ausgabe "abcGamma", die zeigen, dass die
$_
variable bleibt definiert, nachdem in derforeach
; es ist nicht irgendeine seltsame Art von "lokalen" Variablen.Als für die Leistungen, glaube ich nicht, es macht viel Unterschied, aber das ist Ihr Anruf. Eher, ich würde versuchen, und nicht Globale Variablen verwenden, um zu vermeiden verschmutzen das Globale scope.
Tests und erfreuliches mehr oder weniger zufällig
n.b. eine aktuelle PHP benötigt, ich denke
fühlen Sie sich frei zu korrigieren/hinzufügen/Verbesserungsvorschläge
Diese sind meine Ergebnisse, formatiert und sortiert:
Müssen zwei Dinge bemerken: zwischen den schnellsten und den langsamsten habe ich eine Differenz von über vierzig mal. Aber die Differenz über hundert tausend Anrufe ist 1.63 Sekunden, was bedeutet, 16.3 Mikrosekunden für eine einzelne Verbindung zwischen der schnelleren und der langsameren Versionen.
Also, wenn eine dieser Versionen Versprechen Sie sparen, sagen wir, in fünf Minuten ein Jahr der Kopf-kratzen, bug-Jagd oder Kunden-support, ist es wahrscheinlich, dass sich für , dass version beweisen, eine lohnende Investition.
Wenn auf der anderen hand, die Sie wirklich brauchen etwas, das rief mehrere Milliarden Zeiten, so dass diese mickrige Mikrosekunden bis zu hinzufügen, die es Wert ist anzugehen, dann wohl Sie wären besser dran, investieren einige Zeit in die Portierung (oder portiert), der Abschnitt von code, eine Sprache, die entweder von Natur aus schneller oder gemacht werden können, Massiv zu parallelisieren, vielleicht C oder Erlang; oder re-denken, der Architektur (z.B. daemonize einen Prozess zu speichern, auf die Gemeinkosten, verwenden Sie gespeicherte Prozeduren, verlagern den Streit um die RDBMS -, cache-Ergebnisse, ...).
Vom Grundlagen:
So
$_
ist nur eine beliebige variable. Es gibt wirklich keinen Unterschied zwischen der Verwendung$_
und$value
, außer dass$_
ist nur eine konventionelle Art und Weise, um anzugeben, ein Wert, der nicht tatsächlich in der Schleife.Beachten Sie, dass diese
Ausgänge
Der test zeigt, dass die Verwendung
$_
als Variablenname in dieser situation scheint es nicht zu anders sein mit jeder anderen Variablen-Namen. Der Wert ist immer noch in der Variablen gespeichert.Wie andere gesagt haben
$_
ist ein Gültiger Variablenname. Dies scheint Typo3-coding-guidelines. Warum foreach, wenn Sie nicht brauchen das Wert? Das sieht hackish. Sie erhalten die keys als Werte. Ich würde halt:foreach
.value
.