Ich versuche, dynamische Variablennamen zu verwenden (ich bin nicht sicher, wie sie tatsächlich heißen). Aber ziemlich ähnlich:
for($i=0; $i<=2; $i++) {
$("file" . $i) = file($filelist[$i]);
}
var_dump($file0);
Die Rückkehr null
sagt mir, dass es nicht funktioniert. Ich habe keine Ahnung, nach welcher Syntax oder Technik ich suche, was die Recherche erschwert. $filelist
wird früher definiert.
php
variables
dynamic
dynamic-variables
user1159454
quelle
quelle
Antworten:
Wickeln Sie sie ein
{}
:Arbeitsbeispiel
Mit
${}
können Sie dynamische Variablen erstellen. Ein einfaches Beispiel:quelle
${'fixedTime$i'} = $row['timeInstance'];
gibt Ihnen eine nicht sehr nützliche$fixedTime$i
anstelle von$fixedTime1, $fixedTime2
etc. (Zum Glück fast sofort entdeckt.)Überblick
In PHP können Sie
$
einer Variablen einfach ein Extra hinzufügen, um sie zu einer dynamischen Variablen zu machen:Ich würde es zwar nicht empfehlen, aber Sie könnten dieses Verhalten sogar verketten:
Sie können, müssen aber nicht
$variableName
zwischen{}
:Die Verwendung
{}
ist nur obligatorisch, wenn der Name Ihrer Variablen selbst aus mehreren Werten besteht, wie folgt:Es wird dennoch empfohlen, immer zu verwenden
{}
, da es besser lesbar ist.Unterschiede zwischen PHP5 und PHP7
Ein weiterer Grund, immer zu verwenden
{}
ist, dass PHP5 und PHP7 etwas anders mit dynamischen Variablen umgehen, was in einigen Fällen zu einem anderen Ergebnis führt.In PHP7 werden dynamische Variablen, Eigenschaften und Methoden jetzt streng in der Reihenfolge von links nach rechts ausgewertet, im Gegensatz zu der Mischung von Sonderfällen in PHP5. Die folgenden Beispiele zeigen, wie sich die Reihenfolge der Bewertung geändert hat.
Fall 1 :
$$foo['bar']['baz']
${$foo['bar']['baz']}
${$foo}['bar']['baz']
Fall 2:
$foo->$bar['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
Fall 3:
$foo->$bar['baz']()
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
Fall 4:
Foo::$bar['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
quelle
Versuchen Sie es
{}
anstelle von()
:quelle
$price_for_monday = 10; $price_for_tuesday = 20; $today = 'tuesday'; $price_for_today = ${ 'price_for_' . $today}; echo $price_for_today; // will return 20
Ich mache das ziemlich oft bei Ergebnissen, die von einer Abfrage zurückgegeben wurden.
z.B
Jetzt kann ich nur noch $ MyFieldname (was in Echoanweisungen usw. einfacher ist) anstelle von $ MyQueryResult ['MyFieldname'] verwenden.
Ja, es ist wahrscheinlich faul, aber ich hatte nie Probleme.
quelle
Tom, wenn Sie ein vorhandenes Array haben, können Sie dieses Array in ein Objekt konvertieren und wie folgt verwenden:
quelle
Ich habe eine Lösung für dynamisch erstellten Variablenwert und kombinierte alle Werte in einer Variablen.
quelle
Ich war in einer Position, in der ich 6 identische Arrays hatte, und ich musste abhängig von einer anderen Variablen das richtige auswählen und ihm dann Werte zuweisen. In dem hier gezeigten Fall war $ comp_cat 'a', also musste ich mein 'a'-Array auswählen (ich hatte natürlich auch' b 'bis' f 'Arrays)
Beachten Sie, dass die Werte für die Position der Variablen im Array nach der schließenden Klammer stehen.
quelle
Versuchen Sie es mit {} anstelle von ():
quelle