Biztosan van otthon szekrény vagy komód. Használatuk elve egyszerű: olyan dolgokat teszünk oda, amelyekre jelenleg nincs szükségünk, de egy idő után szükség lehet rájuk.
A változók ugyanúgy működnek. Adhat valamilyen értéket beléjük, és ott tárolhatja, amíg szüksége van rá.
Változók létrehozása
Értéket adhat egy változóba az alábbiak szerint:
A fenti kódban létrehoztuk a $ name változót, és bele tettük Ivan értékét, majd létrehoztuk a $ age változót, és hozzá rendeltük a 20 értéket.
A "változó" név azt jelenti, hogy értéke megváltozhat a szkript végrehajtása során:
Bizonyos nyelvekben először egy változót kell "deklarálni", majd használni. A PHP-ben nincs deklaráció - egy változó akkor jön létre, amikor értéket ad neki.
A PHP programozói azonban gyakran azt mondják, hogy "deklarálja a változót" a "változó létrehozása" helyett.
Továbbá ahelyett, hogy "értéket adnának egy változóba", gyakran azt mondják, hogy "értéket rendel".
Az ok egyszerű - a \u003d szimbólumot, amelynek köszönhetően értéket tárolunk egy változóban, "hozzárendelési operátornak" nevezzük. Ezért a "megfelelő" kifejezés.
Változó elnevezési szabályok
1. A változó neve $ szimbólummal kezdődik.
2. A második karakter lehet betű vagy aláhúzás _
A változó nevek különbséget tesznek a kis- és nagybetűk között. A $ name és a $ Name különböző változók.
Egy változó értékének megjelenítése a képernyőn
Megjeleníthet egy változót a már ismert echo paranccsal:
Az echo parancs lehetővé teszi, hogy egyszerre több értéket jelenítsen meg:
Vegyük észre, hogy 2 értéket adtunk át a visszhangnak vesszővel elválasztva. Így annyi értéket vihetünk át, amennyit csak akarunk. A következő két példa ugyanazt az eredményt hozza:
Rövidített szintaxis is létezik a változók PHP-ben történő kiadására. Helyette
= $f_name, " ", $s_name ?>
A PHP 5.4 előtt a gyorsírás szintaxisa csak akkor működött, amikor a PHP beállításaiban engedélyezték a short_open_tag irányelvet, amely lehetővé teszi a gyorsírás kezdő címke használatát is наравне с
Egy változó értékének ellenőrzése
Az echo parancs nem mindig kényelmes egy változó aktuális értékének ellenőrzésére. Például, ha megpróbál megjeleníteni egy üres karakterláncot, "" semmi nem jelenik meg a képernyőn. És nem világos, mi az oka - üres változó vagy nem működő kód.
Ezért a var_dump () függvény segítségével ellenőrizzük a változó értékét:
A szkript végrehajtásának eredménye:
Húr (5) "Vasya" húr (0) ""
Amint láthatja, a PHP nemcsak a változó tartalmát, hanem a karakterek számát, sőt a változó típusát (karakterláncot) is megjelenítette. A következő órákon alaposabban megvizsgáljuk az adattípusokat.
Változók törlése
Törölhet egy meglévő változót az unset () függvény segítségével:
Itt az ideje egy kicsit gyakorolni.
Ne feledje, hogy szinte minden PHP-feladatnak több megoldása is lehet. Ezért, ha a döntései eltérnek az ezen az oldalon írtaktól, ez egyáltalán nem jelenti azt, hogy valamit rosszul tettél.
Írjon egy szkriptet, amely:
1. Változókat hoz létre címsorral és tartalommal, valamint néhány értékkel.
2. A h1 tag belsejében a címváltozó, a div tagben pedig a tartalmi változó értékét adja ki.
Megoldás megjelenítése
", $ title,""; visszhang"
Szeretném felhívni a figyelmét arra, hogy nem csak ez a döntés helyes. Például a következő kód ugyanazt az eredményt hozza:
A Windows környezeti (környezeti) változói különféle információkat tartalmaznak a rendszerbeállításokról és a felhasználó környezetéről. Megkülönböztetni a felhasználói, a rendszer és a folyamat környezeti változóit.
A környezeti változók tartalmának megtekintésére a Windows rendszeren a legegyszerűbb módja a rendszer tulajdonságainak megnyitása ( sysdm.cpl) -\u003e Speciális -\u003e Környezeti változók. Mint látható, a megnyílt szakaszban két rész található: a felső a felhasználó környezeti változóit, az alsó a rendszerváltozókat tartalmazza.
Ezenkívül a környezeti változókat a rendszerleíró adatbázis tárolja. Az egyéni változókat a szakasz tárolja. Rendszer - be HKLM \\ SYSTEM \\ CurrentControlSet \\ Control \\ Session Manager \\ Environment.
Az összes környezeti változó értékét megjelenítheti a Windows parancssorában. A parancs egyszerű:
A parancs felsorolja a környezeti változókat és azok értékeit.
A PowerShellben az összes környezeti változó megjelenítéséhez használhatja a parancsot:
Ha csak egy változó értékét szeretné megjeleníteni, akkor az echo parancsot kell használnia, és a változó nevét százalékjelekbe kell foglalnia. Például,
Echo% systemroot%
set\u003e c: \\ tmp \\ env_var.txt
Egy adott folyamat környezeti változói beszerezhetők az ingyenes használatával process Explorer segédprogramok (a Sysinternals-tól). Elég megnyitni a folyamat tulajdonságait, és menni a fülre Környezet.
13 évvel ezelőtt
Egy kis giccs, akire vigyázni kell:
Ha kikapcsolja a RegisterGlobals és a kapcsolódó fájlokat, majd használja a get_defined_vars () parancsot, akkor valami hasonlót láthat:
Sor
[GLOBALS] \u003d\u003e tömb
[GLOBALS] \u003d\u003e tömb
* RECURSION *
[_POST] \u003d\u003e Tömb ()
[_GET] \u003d\u003e tömb ()
[_COOKIE] \u003d\u003e Tömb ()
[_FILES] \u003d\u003e Tömb ()
)
[_POST] \u003d\u003e Tömb ()
[_GET] \u003d\u003e tömb ()
[_COOKIE] \u003d\u003e Tömb ()
[_FILES] \u003d\u003e Tömb ()
)
?>
Figyelje meg, hogy a $ _SERVER nincs ott. Úgy tűnik, hogy a php csak akkor tölti be a $ _SERVER szuperglobalt, ha valahol használják. Ezt megteheti:
nyomtatás "
". htmlspecialchars (print_r (get_defined_vars (), true))."" ;
nyomtatás "
". htmlspecialchars (print_r ($ _SERVER, true))."" ;
?>
És akkor a $ _SERVER megjelenik mindkét listában. Azt hiszem, ez nem igazán baj, mert semmi rossz nem fog történni, de érdekes érdekesség.
6 évvel ezelőtt
Mivel a get_defined_vars () csak abban a pontban kapja meg a változókat, ahová a függvényt meghívja, van egy egyszerű módja az aktuális hatókörön belül definiált változók megszerzésének.
// A php szkripted legfelső része
$ vars \u003d get_defined_vars ();
// Most tedd a dolgod
$ foo \u003d "foo";
$ bar \u003d "bar";
// Az aktuális hatókörben definiált összes változó beolvasása
$ vars \u003d array_diff (get_defined_vars (), $ vars);
visszhang "
" ;" ;
print_r ($ vars);
visszhang "
?>
15 évvel ezelőtt
Itt van egy olyan funkció, amely hibakeresési jelentést generál a megjelenítéshez vagy az e-mailhez
a get_defined_vars használatával. Kiválóan használható részletes pillanatkép készítéséhez anélkül
támaszkodva a felhasználói adatokra.
függvény generáljaDebugReport ($ metódus, $ define_vars, $ email \u003d "undefined") (
// Funkció hibakeresési jelentés létrehozására megjelenítéshez vagy e-mailhez.
// Használat: generatorDebugReport (metódus, get_defined_vars (), email);
// Ahol a módszer "böngésző" vagy "e-mail".
// Hozzon létre egy mellőzési listát a "get_defined_vars" által visszaadott kulcsokhoz.
// Például a HTTP_POST_VARS, HTTP_GET_VARS és mások
// felesleges (ugyanaz, mint _POST, _GET)
// Tartalmazza azokat a varsokat is, amelyeket biztonsági okokból figyelmen kívül hagy. PHPSESSID.
$ ignorelist \u003d tömb ("HTTP_POST_VARS", "HTTP_GET_VARS",
"HTTP_COOKIE_VARS", "HTTP_SERVER_VARS",
"HTTP_ENV_VARS", "HTTP_SESSION_VARS",
"_ENV", "PHPSESSID", "SESS_DBUSER",
"SESS_DBPASS", "HTTP_COOKIE");
$ időbélyeg \u003d dátum ("m / d / y h: m: s");
$ message \u003d "A hibakeresési jelentés létrehozta a $ időbélyeget \\ n";
// A jó méréshez szerezze be az utolsó SQL hibát, ahol a $ link az erőforrás-azonosító
// a mysql_connect számára. Hozzászólás vagy módosítás az adatbázis vagy az absztrakció beállításához.
globális $ link;
$ sql_error \u003d mysql_error ($ link);
if ($ sql_error) {
$ message. \u003d "\\ nMyql üzenetek: \\ n". mysql_error ($ link);
}
// A MySQL befejezése
// Itt rekurzív függvényt használhat. Megkapod az ötletet ;-)
foreach ($ define_vars mint $ key \u003d\u003e $ val) (
if (is_array ($ val) &&! in_array ($ key, $ ignorelist) && count ($ val)\u003e 0) (
$ message. \u003d "\\ n $ kulcs tömb (kulcs \u003d érték): \\ n";
foreach ($ val mint $ subkey \u003d\u003e $ subval) (
if (! in_array ($ alkulcs, $ ignorelist) &&! is_array ($ subval)) (
$ üzenet. \u003d $ alkulcs. "\u003d". $ subval. "\\ n";
}
elseif (! in_array ($ alkulcs, $ ignorelist) && is_array ($ subval)) (
foreach ($ subval mint $ subsubkey \u003d\u003e $ subsubval) (
if (! in_array ($ alkulcs, $ ignorelist)) (
$ üzenet. \u003d $ alkulcs. "\u003d". $ subsubval. "\\ n" ;
}
}
}
}
}
elseif (!is_array ($ val) &&! in_array ($ key, $ ignorelist) && $ val) (
$ message. \u003d "\\ nVáltozó". $ kulcs. "\u003d". $ val. "\\ n";
}
}
Ha ($ method \u003d\u003d "böngésző") (
echo nl2br ($ üzenet);
}
elseif ($ method \u003d\u003d "email") (
if ($ email \u003d\u003d "undefined") (
$ email \u003d $ _SERVER ["SERVER_ADMIN"];
}
$ mresult \u003d mail ($ email, "Debug Report for". $ _ENV ["HOSTNAME"]. "", $ message);
ha ($ mresult \u003d\u003d 1) (
visszhang "A hibakeresési jelentés sikeresen elküldve. \\ N";
}
más (
visszhang "Nem sikerült elküldeni a hibakeresési jelentést. \\ N";
}
}
}
?>
17 évvel ezelőtt
Egyszerű rutin a get_defined_vars objektum XML formátumba konvertálására.
függvény obj2xml ($ v, $ indent \u003d "") (
while (lista ($ kulcs, $ val) \u003d mindegyik ($ v)) (
ha ($ key \u003d\u003d "__attr") folytatódik;
// Ellenőrizze a __attr
if (is_object ($ val -\u003e __attr)) {
while (lista ($ key2, $ val2) \u003d mindegyik ($ val -\u003e __attr)) (
$ attr. \u003d "$ key2 \u003d \\" $ val2 \\ "";
}
}
else $ attr \u003d "";
if (is_array ($ val) || is_object ($ val)) {
print ("$ indent<
$key$attr
>\\ n ");
obj2xml ($ val, $ indent. "");
print ("$ indent
$key
>\\ n ");
}
else print ("$ indent<
$key$attr
> $ val
$key
>\\ n ");
}
}
// Példa objektum
$ x -\u003e név -\u003e első \u003d "János";
$ x -\u003e név -\u003e utolsó \u003d "Smith";
$ x -\u003e arr ["Gyümölcs"] \u003d "Bannana";
$ x -\u003e arr ["Veg"] \u003d "Sárgarépa";
$ y -\u003e ügyfél \u003d $ x;
$ y -\u003e ügyfél -\u003e __attr -\u003e id \u003d "176C4";
$ z \u003d get_defined_vars ();
obj2xml ($ z ["y"]);
?>
kiadja:
11 évvel ezelőtt
Megjegyzendő, hogy a get_defined_vars () nem ad vissza változó hivatkozások halmazát (ahogy reméltem). Például:
// változó meghatározása
$ my_var \u003d "foo";
// lekérjük a definiált változók listáját
$ define_vars \u003d get_defined_vars ();
// most próbáld meg megváltoztatni az értéket a visszaadott tömbön keresztül
$ define_vars ["my_var"] \u003d "bar";
echo $ my_var, "\\ n";
?>
"foo" -t (az eredeti érték) adja ki. "Jó lenne, ha a get_defined_vars () opcionális argumentummal szolgálna hivatkozásokká, de elképzelhető, hogy meglehetősen speciális kérés. Ezt maga is megteheti (kevésbé kényelmesen), például:
$ define_vars \u003d tömb ();
$ var_names \u003d tömb_kulcsok (get_defined_vars ());
foreach ($ var_names mint $ var_name)
{
$ define_vars [$ var_name] \u003d & $ $ var_name;
}
?>
1 évvel ezelőtt
Korábban itt írtam arról, hogy "ez" a get_defined_vars fájlban található.
Kiderült, hogy nem mindig van ott, de bizonyos esetekben megmagyarázhatatlanul megjelenik.
Php -r "
osztály teszt (
nyilvános függvény a () (var_dump (tömb_kulcsok (get_defined_vars ())); $ a \u003d 123;)
nyilvános függvény b () (var_dump (tömb_kulcsok (get_defined_vars ())); $ this;)
}
$ t \u003d új teszt ();
$ t-\u003e a ();
$ t-\u003e b ();
"
Tömb ()
tömb ("ez")
Ez nem a PHP 7.2-ben történik, hanem a PHP 5.6-ban.
1 évvel ezelőtt
Néhány megjegyzés itt rámutat, hogy ez a függvény nem ad vissza hivatkozásokat. Viszont visszaadja a neveket, és a nevek "referenciák".
Nem ajánlanám azokat a javaslatokat, amelyek referenciává alakítják.
X nyilvános funkció ($ a, $ b, $ c) (
foreach (array_keys (get_defined_vars ()) mint $ kulcs)
if ($ kulcs! \u003d\u003d "ez")
$ this-\u003e y ($ ($ key));
}
Y függvény (& $ input) (
$ input ++;
}
A $ () helyett használhatja a $$ értéket is.
A magam idejében néhány ócska dolgot tettem egy rendkívül általános kód elkészítéséhez, de soha nem kellett a fentihez hasonló dolgokat tennem. Lehet, hogy nem is fog működni (de kellene, mert ez nem különbözik a $ a [$ kulcs] -tól).
Megtehette a $$ key ++ parancsot is, de még soha nem láttam olyan kódot, amely nem volt borzalmasan rossz (dinamikusan, ahol a dinamika nem előnyös).
Ha ilyesmit csinálsz, adj neki további ellenőrzést.
13 évvel ezelőtt
Egy kis giccs, akire vigyázni kell:
Ha kikapcsolja a RegisterGlobals és a kapcsolódó fájlokat, majd használja a get_defined_vars () parancsot, akkor valami hasonlót láthat:
Sor
[GLOBALS] \u003d\u003e tömb
[GLOBALS] \u003d\u003e tömb
* RECURSION *
[_POST] \u003d\u003e Tömb ()
[_GET] \u003d\u003e tömb ()
[_COOKIE] \u003d\u003e Tömb ()
[_FILES] \u003d\u003e Tömb ()
)
[_POST] \u003d\u003e Tömb ()
[_GET] \u003d\u003e tömb ()
[_COOKIE] \u003d\u003e Tömb ()
[_FILES] \u003d\u003e Tömb ()
)
?>
Figyelje meg, hogy a $ _SERVER nincs ott. Úgy tűnik, hogy a php csak akkor tölti be a $ _SERVER szuperglobalt, ha valahol használják. Ezt megteheti:
nyomtatás "
". htmlspecialchars (print_r (get_defined_vars (), true))."" ;
nyomtatás "
". htmlspecialchars (print_r ($ _SERVER, true))."" ;
?>
És akkor a $ _SERVER megjelenik mindkét listában. Azt hiszem, ez nem igazán baj, mert semmi rossz nem fog történni, de érdekes érdekesség.
6 évvel ezelőtt
Mivel a get_defined_vars () csak abban a pontban kapja meg a változókat, ahová a függvényt meghívja, van egy egyszerű módja az aktuális hatókörön belül definiált változók megszerzésének.
// A php szkripted legfelső része
$ vars \u003d get_defined_vars ();
// Most tedd a dolgod
$ foo \u003d "foo";
$ bar \u003d "bar";
// Az aktuális hatókörben definiált összes változó beolvasása
$ vars \u003d array_diff (get_defined_vars (), $ vars);
visszhang "
" ;" ;
print_r ($ vars);
visszhang "
?>
15 évvel ezelőtt
Itt van egy olyan funkció, amely hibakeresési jelentést generál a megjelenítéshez vagy az e-mailhez
a get_defined_vars használatával. Kiválóan használható részletes pillanatkép készítéséhez anélkül
támaszkodva a felhasználói adatokra.
függvény generáljaDebugReport ($ metódus, $ define_vars, $ email \u003d "undefined") (
// Funkció hibakeresési jelentés létrehozására megjelenítéshez vagy e-mailhez.
// Használat: generatorDebugReport (metódus, get_defined_vars (), email);
// Ahol a módszer "böngésző" vagy "e-mail".
// Hozzon létre egy mellőzési listát a "get_defined_vars" által visszaadott kulcsokhoz.
// Például a HTTP_POST_VARS, HTTP_GET_VARS és mások
// felesleges (ugyanaz, mint _POST, _GET)
// Tartalmazza azokat a varsokat is, amelyeket biztonsági okokból figyelmen kívül hagy. PHPSESSID.
$ ignorelist \u003d tömb ("HTTP_POST_VARS", "HTTP_GET_VARS",
"HTTP_COOKIE_VARS", "HTTP_SERVER_VARS",
"HTTP_ENV_VARS", "HTTP_SESSION_VARS",
"_ENV", "PHPSESSID", "SESS_DBUSER",
"SESS_DBPASS", "HTTP_COOKIE");
$ időbélyeg \u003d dátum ("m / d / y h: m: s");
$ message \u003d "A hibakeresési jelentés létrehozta a $ időbélyeget \\ n";
// A jó méréshez szerezze be az utolsó SQL hibát, ahol a $ link az erőforrás-azonosító
// a mysql_connect számára. Hozzászólás vagy módosítás az adatbázis vagy az absztrakció beállításához.
globális $ link;
$ sql_error \u003d mysql_error ($ link);
if ($ sql_error) {
$ message. \u003d "\\ nMyql üzenetek: \\ n". mysql_error ($ link);
}
// A MySQL befejezése
// Itt rekurzív függvényt használhat. Megkapod az ötletet ;-)
foreach ($ define_vars mint $ key \u003d\u003e $ val) (
if (is_array ($ val) &&! in_array ($ key, $ ignorelist) && count ($ val)\u003e 0) (
$ message. \u003d "\\ n $ kulcs tömb (kulcs \u003d érték): \\ n";
foreach ($ val mint $ subkey \u003d\u003e $ subval) (
if (! in_array ($ alkulcs, $ ignorelist) &&! is_array ($ subval)) (
$ üzenet. \u003d $ alkulcs. "\u003d". $ subval. "\\ n";
}
elseif (! in_array ($ alkulcs, $ ignorelist) && is_array ($ subval)) (
foreach ($ subval mint $ subsubkey \u003d\u003e $ subsubval) (
if (! in_array ($ alkulcs, $ ignorelist)) (
$ üzenet. \u003d $ alkulcs. "\u003d". $ subsubval. "\\ n" ;
}
}
}
}
}
elseif (!is_array ($ val) &&! in_array ($ key, $ ignorelist) && $ val) (
$ message. \u003d "\\ nVáltozó". $ kulcs. "\u003d". $ val. "\\ n";
}
}
Ha ($ method \u003d\u003d "böngésző") (
echo nl2br ($ üzenet);
}
elseif ($ method \u003d\u003d "email") (
if ($ email \u003d\u003d "undefined") (
$ email \u003d $ _SERVER ["SERVER_ADMIN"];
}
$ mresult \u003d mail ($ email, "Debug Report for". $ _ENV ["HOSTNAME"]. "", $ message);
ha ($ mresult \u003d\u003d 1) (
visszhang "A hibakeresési jelentés sikeresen elküldve. \\ N";
}
más (
visszhang "Nem sikerült elküldeni a hibakeresési jelentést. \\ N";
}
}
}
?>
17 évvel ezelőtt
Egyszerű rutin a get_defined_vars objektum XML formátumba konvertálására.
függvény obj2xml ($ v, $ indent \u003d "") (
while (lista ($ kulcs, $ val) \u003d mindegyik ($ v)) (
ha ($ key \u003d\u003d "__attr") folytatódik;
// Ellenőrizze a __attr
if (is_object ($ val -\u003e __attr)) {
while (lista ($ key2, $ val2) \u003d mindegyik ($ val -\u003e __attr)) (
$ attr. \u003d "$ key2 \u003d \\" $ val2 \\ "";
}
}
else $ attr \u003d "";
if (is_array ($ val) || is_object ($ val)) {
print ("$ indent<
$key$attr
>\\ n ");
obj2xml ($ val, $ indent. "");
print ("$ indent
$key
>\\ n ");
}
else print ("$ indent<
$key$attr
> $ val
$key
>\\ n ");
}
}
// Példa objektum
$ x -\u003e név -\u003e első \u003d "János";
$ x -\u003e név -\u003e utolsó \u003d "Smith";
$ x -\u003e arr ["Gyümölcs"] \u003d "Bannana";
$ x -\u003e arr ["Veg"] \u003d "Sárgarépa";
$ y -\u003e ügyfél \u003d $ x;
$ y -\u003e ügyfél -\u003e __attr -\u003e id \u003d "176C4";
$ z \u003d get_defined_vars ();
obj2xml ($ z ["y"]);
?>
kiadja:
11 évvel ezelőtt
Megjegyzendő, hogy a get_defined_vars () nem ad vissza változó hivatkozások halmazát (ahogy reméltem). Például:
// változó meghatározása
$ my_var \u003d "foo";
// lekérjük a definiált változók listáját
$ define_vars \u003d get_defined_vars ();
// most próbáld meg megváltoztatni az értéket a visszaadott tömbön keresztül
$ define_vars ["my_var"] \u003d "bar";
echo $ my_var, "\\ n";
?>
"foo" -t (az eredeti érték) adja ki. "Jó lenne, ha a get_defined_vars () opcionális argumentummal szolgálna hivatkozásokká, de elképzelhető, hogy meglehetősen speciális kérés. Ezt maga is megteheti (kevésbé kényelmesen), például:
$ define_vars \u003d tömb ();
$ var_names \u003d tömb_kulcsok (get_defined_vars ());
foreach ($ var_names mint $ var_name)
{
$ define_vars [$ var_name] \u003d & $ $ var_name;
}
?>
1 évvel ezelőtt
Korábban itt írtam arról, hogy "ez" a get_defined_vars fájlban található.
Kiderült, hogy nem mindig van ott, de bizonyos esetekben megmagyarázhatatlanul megjelenik.
Php -r "
osztály teszt (
nyilvános függvény a () (var_dump (tömb_kulcsok (get_defined_vars ())); $ a \u003d 123;)
nyilvános függvény b () (var_dump (tömb_kulcsok (get_defined_vars ())); $ this;)
}
$ t \u003d új teszt ();
$ t-\u003e a ();
$ t-\u003e b ();
"
Tömb ()
tömb ("ez")
Ez nem a PHP 7.2-ben történik, hanem a PHP 5.6-ban.
1 évvel ezelőtt
Néhány megjegyzés itt rámutat, hogy ez a függvény nem ad vissza hivatkozásokat. Viszont visszaadja a neveket, és a nevek "referenciák".
Nem ajánlanám azokat a javaslatokat, amelyek referenciává alakítják.
X nyilvános funkció ($ a, $ b, $ c) (
foreach (array_keys (get_defined_vars ()) mint $ kulcs)
if ($ kulcs! \u003d\u003d "ez")
$ this-\u003e y ($ ($ key));
}
Y függvény (& $ input) (
$ input ++;
}
A $ () helyett használhatja a $$ értéket is.
A magam idejében néhány ócska dolgot tettem egy rendkívül általános kód elkészítéséhez, de soha nem kellett a fentihez hasonló dolgokat tennem. Lehet, hogy nem is fog működni (de kellene, mert ez nem különbözik a $ a [$ kulcs] -tól).
Megtehette a $$ key ++ parancsot is, de még soha nem láttam olyan kódot, amely nem volt borzalmasan rossz (dinamikusan, ahol a dinamika nem előnyös).
Ha ilyesmit csinálsz, adj neki további ellenőrzést.