Variable Konstantennamen

Jakob

Jakob

Aktives Mitglied
Thread Starter
Dabei seit
05.01.2004
Beiträge
1.070
Reaktionspunkte
21
Hallo,

auf Variablen mit variablen Namen kann ich ja bekanntermaßen mit $$name zugreifen. (ist $name=1, so wird die Variable $1 genutzt)

Wie klappt das mit Konstanten? Bekomm's nicht hin.
 
Hallo,

Wenn du in PHP konstanten definieren willst musst du das mit einem "define()" machen. Zum Beispiel:
define("LINK","http://www.google.ch");
dannach kannst du OHNE $ auf diese Konstante zugreiffen.
echo LINK;

Gruss

Kasumix
 
Mal ganz davon abgesehen, dass ich den sinn solcher Operationen nie verstanden habe, da es auch Arrays gibt, gibt es meine ich, keine von Haus aus Möglichkeit, um Variabel auf Konstanten zuzugreifen.

Abhilfe könnte da aber eine Funktioin schaffen, welche den Variablen Namen mit eval() "simuliert".

also in etwa so:
PHP:
function usevariableconst($constname){

$tmp = "$var = ".$constname;

eval($tmp);

return $var;

}


Ist aber nicht getestet :)


gruß
Lukas
 
@kasumix: Es geht um Konstanten mit variablen Namen, bspw. LINK1, LINK2, LINK3 etc. Diese würde ich gerne in der Form LINK.$i aufrufen.

@Lukas: Auch wenn mir eval immer ein bisschen suspekt ist… Das ist ne clevere Idee.

koli.bri schrieb:
[…]da es auch Arrays gibt, gibt es meine ich, keine von Haus aus Möglichkeit, um variabel auf Konstanten zuzugreifen.

Eben nicht. Man kann doch kein $array[LINK][1] haben, oder? Mir geht's um die Eigenschaften von Konstanten (Namensraum, Reichweite, nicht änderbar etc.)

Habe mich erstmal für arrays entschieden.
 
Bietet PHP nur normale Variablen und Arrays? Bei Perl könnte man Hashes nehmen. Gibt es sowas auch für PHP?
 
Klar, PHP-Arrays sind recht mächtig.

PHP:
$arr = array(1, 2, 3, "bla" => "ble", "key" => "value");

Überdenk das mit den Konstanten am besten nochmal, denn für sowas wie "LINK1, LINK2, LINK3 etc." sind Arrays genau das richtige. Zudem viel schneller als das eval()-Gehampel :) (aber ne gute Idee)

-> http://www.php.net/array
 
Hi Sovok,

ja danke. Das Ding ist halt, dass es eigentlich wirklich Konstanten sind (von den Werten her) und somit das die richtige Art wäre. Noch dazu ist Unveränderlichkeit in ner Sprache wie PHP, die ohne zu zögern Array_of_strings->Object->Int mitmacht, manchmal wirklich sehr hilfreich.

Aber hab mich schon damit abgefunden, dass es nur mit eval geht und nutze deshalb arrays.
 
Zurück
Oben Unten