2009-03-20 7 views
2

ok ... in php wie mache ich das? das folgende Szenario gegeben:Wie erstelle ich eine Variable aus einem anderen Variablennamen?

// array of letters 
var $letters = array('a', 'b', 'c'); 
// loop through array and create empty arrays with names like $a, $b, $c 
foreach($letters as $letter) { 
    var $$letter = array(); 
} 
+0

Ist ein Array nicht besser dafür? –

+0

möglich Duplikat von [Kann ich einen generierten Variablennamen in PHP verwenden?] (Http://stackoverflow.com/questions/130240/cani-i-use-a-generated-variable-name-in-php) – outis

Antwort

3

Der Code war fast richtig. Sie müssen nur "var" in der 2. und 5. Zeile entfernen.

// array of letters 
$letters = array('a', 'b', 'c'); 
// loop through array and create empty arrays with names like $a, $b, $c 
foreach($letters as $letter) { 
    $$letter = array(); 
} 

Dies funktioniert ordnungsgemäß (wie Sie beschrieben). Ich habe es getestet.

Mehr information on variable variables here.

Nebenbei würde ich empfehlen, eval() in Ihrem PHP zu verwenden.

+0

so ist es. Ich hatte ein albernes syntaktisches Problem, das ich nicht sah ..... danke – ocergynohtna

+0

Sie möchten vielleicht in displaying_errors in Ihrer php.ini (auf Ihrem Entwicklungsrechner) einschalten - muss so gemacht werden, um Parse-Fehler anzuzeigen. Außerdem kann die PHP-Befehlszeilenschnittstelle Syntaxprüfung (dh nennt es lint) - ich habe das in meinen Texteditor/IDE integriert. – thomasrutter

0

Schauen Sie sich die Funktion eval(): Eval

+0

würde ich empfehlen gegen eval. Es gibt keine Situation, in der eval() die einzige Lösung oder sogar die beste Lösung ist, und ihre Verwendung hier zu empfehlen ist schlecht beraten und meiner Meinung nach seltsam. – thomasrutter

2

Wahrscheinlich möchten Sie das nicht tun. Die Verwendung variabler Variablen ist normalerweise ein Zeichen dafür, dass Datenstrukturen und/oder übertriebene Klugheit nicht verstanden werden. Wenn Sie wirklich, dies tun möchten, können Sie so etwas wie sagen ...

extract(array_fill_keys($letters, array())); 

... aber es wäre am besten, wenn Sie nicht. Die Verwendung verschachtelter Arrays ist wahrscheinlich eine viel bessere Idee - besonders, da man einfach sagen kann $nested['a'][] = 5 und PHP wird den Wert an das Array anhängen und einen erstellen, wenn nichts da ist. Alternativ können Sie einfach $varname['key'] = 123 sagen und wiederum wird PHP das Array automatisch für Sie erstellen.

+0

Variable Variablen sind tatsächlich sehr nützlich und leistungsstark, und ich habe sie sicherlich über Arrays mehrmals gewünscht. Beispiel: Verwenden des Arrays von Spalten, die SQL zurückgibt, um eine Model-Instanz aufzufüllen. – seanmonstar

+0

seanmonstar - du meinst wie Auszug() http://us.php.net/manual/en/function.extract.php? –

+0

Nein, ich meine nicht wie Extrakt. extract füllt nur den aktuellen Bereich mit Variablen. Variable Variablen erlauben mir, die Werte eines Arrays als Eigenschaften einer Modellinstanz zuzuweisen. – seanmonstar