Próbuję użyć nazw zmiennych dynamicznych (nie jestem pewien, jak się faktycznie nazywają), ale w zasadzie tak:
for($i=0; $i<=2; $i++) {
$("file" . $i) = file($filelist[$i]);
}
var_dump($file0);
Zwrot null
mówi mi, że to nie działa. Nie mam pojęcia, jaka jest składnia lub technika, której szukam, co utrudnia badanie. $filelist
jest zdefiniowany wcześniej.
php
variables
dynamic
dynamic-variables
użytkownik1159454
źródło
źródło
Odpowiedzi:
Zawiń je w
{}
:Przykład roboczy
Używanie
${}
jest sposobem na tworzenie zmiennych dynamicznych, prosty przykład:źródło
${'fixedTime$i'} = $row['timeInstance'];
daje niezbyt przydatne$fixedTime$i
zamiast$fixedTime1, $fixedTime2
itp. (Na szczęście zauważyłem to prawie od razu.)Przegląd
W PHP możesz po prostu wstawić dodatkowy
$
przed zmienną, aby stała się zmienną dynamiczną:Chociaż nie poleciłbym tego, możesz nawet połączyć to zachowanie:
Możesz, ale nie musisz stawiać
$variableName
między{}
:Używanie
{}
jest obowiązkowe tylko wtedy, gdy sama nazwa zmiennej jest złożona z wielu wartości, takich jak:Niemniej jednak zaleca się zawsze używać
{}
, ponieważ jest bardziej czytelny.Różnice między PHP5 a PHP7
Innym powodem, dla którego należy zawsze używać
{}
, jest to, że PHP5 i PHP7 mają nieco inny sposób radzenia sobie ze zmiennymi dynamicznymi, co w niektórych przypadkach skutkuje innym wynikiem.W PHP7 zmienne dynamiczne, właściwości i metody będą teraz oceniane ściśle w kolejności od lewej do prawej, w przeciwieństwie do mieszanki specjalnych przypadków w PHP5. Poniższe przykłady pokazują, jak zmieniła się kolejność oceny.
Przypadek 1 :
$$foo['bar']['baz']
${$foo['bar']['baz']}
${$foo}['bar']['baz']
Przypadek 2:
$foo->$bar['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
Przypadek 3:
$foo->$bar['baz']()
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
Przypadek 4:
Foo::$bar['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
źródło
Spróbuj użyć
{}
zamiast()
:źródło
$price_for_monday = 10; $price_for_tuesday = 20; $today = 'tuesday'; $price_for_today = ${ 'price_for_' . $today}; echo $price_for_today; // will return 20
Robię to dość często na podstawie wyników zwróconych z zapytania.
na przykład
Teraz mogę po prostu użyć $ MyFieldname (co jest łatwiejsze w instrukcjach echa itp.) Zamiast $ MyQueryResult [„MyFieldname”]
Tak, to chyba leniwe, ale nigdy nie miałem żadnych problemów.
źródło
Tom, jeśli masz już tablicę, możesz przekonwertować tę tablicę na obiekt i użyć jej w następujący sposób:
źródło
Mam rozwiązanie dla dynamicznie tworzonej wartości zmiennej i połączyłem całą wartość w zmiennej.
źródło
Byłem w pozycji, w której miałem 6 identycznych tablic i musiałem wybrać właściwą w zależności od innej zmiennej, a następnie przypisać jej wartości. W pokazanym tutaj przypadku $ comp_cat był „a”, więc musiałem wybrać moją tablicę „a” (ja oczywiście miałem również tablice „b” do „f”)
Zauważ, że wartości pozycji zmiennej w tablicy idą za nawiasem zamykającym.
źródło
Spróbuj użyć {} zamiast ():
źródło