Variablentitel um eins erhöhen

...komplette Frage anzeigen

9 Antworten

Für so etwas nimmt man in der Informatik schon immer eine Feldvariable (Siehe auch http://de.wikipedia.org/wiki/Feld_%28Datentyp%29 ). Das ist eine Grundtechnik der Programmierung. In PHP realisiert man das mit der Funktion array().

Hallo Xaverx!

Es wäre nett wenn du uns noch weitere Informationen gibts was du damit bezwecken möchtest? Hast du vielleicht ein dynamisch wachsendes Formular? In diesem Fall ist dein Lösungsansatz ansich suboptimal. Dann würde ich dir die Tipps meiner Vorredner mit dem Array ans Herz legen.

Gruß

Dafür bräuchtest du so eine Sprache wie Pearl. Mit der würde das gehen. Allerdings sollte man es trotzdem nicht machen, da der erzeugte Code extrem schwer zu warten wird.

Weswegen willst du denn überhaupt so etwas anstellen?

Mit so einer Sprache wie PHP geht da natürlich auch.

0
@Babelfish

Jap, das hab ich nun auch schon gelernt, man ist ja neugierig :). Allerdings behaupte ich, dass man diese "Technik" nicht benötigt. Weswegen mich weiterhin interessieren würde was der Fragesteller damit gedenkt zu lösen.

0

Nein, das ist auch nicht der Titel sondern der Name der Variable und $variable2 wäre eine neue Variable. Du musst also eine neue Variable mit diesem Namen erzeugen. In c++ gehen solche Dinge, in php weiß ich es nicht aber google mal nach Variablen dynamisch erzeugen.

c++ ist eine statisch typisierte Programmiersprache, es ist also definitv nicht möglich Variablen dynamischen zu erzeugen.

0
@Frischmilch

Ich kann doch wenn ich einen Zeiger definiert habe, während der Laufzeit daraus mit 'new' eine Variable oder ein Array erzeugen oder reden wir aneinander vorbei?

0

Wäre extrem unwahrscheinlich. $variable1 ist ein interner Name und ist eben normalerweise nicht innerhalb des Programmtextes berechenbar.

Aber möglicherweise könnte ein Array das sein, was Du suchst.

Helfen dir variable Variablen weiter:

http://php.net/manual/de/language.variables.variable.php

.

Hatte neulich einen ähnlichen Fall, bei dem ich für ein JavaScript eindeutige Titel gebraucht habe. Dort habe ich es in Form von:

$i=0
while() {
//Schleife
$i++
}

Damit wird allerdings nur der Wert bei jedem Durchlauf von der Schleife um eins erhöht

Ersteres ist doch genau das, was der Fragesteller sucht.

Letzteres ist... einfach ein Schleifenzähler. Nicht das gesuchte.

0
@Frischmilch

Das Stück Code erhöht nur den INHALT der Variable $i, nicht aber deren Name.

0

Wie schon gesagt, geht das mit variablen Variablen. Hier ein Beispiel:

<?php
  $var1 = 'Hallo';
  $var2 = ' ';
  $var3 = 'Welt';
  $var4 = '!';

  for ($i=1; $i<=4; $i++)
  {
    echo ${'var'.$i};
  }
?>

Das sollte man jedoch nur im Notfall nutzen, da es sehr fehleranfällig ist und leicht unvorhersehbare Laufzeitfehler produzieren kann.

Wir wissen zwar nicht, was du genau machen willst aber vermutlich bist du mit Arrays deutlich besser beraten. Hier mal das gleiche Beispiel mit einem Array:

<?php
  $var = array('Hallo', ' ', 'Welt', '!');

  for ($i=0; $i<count($var); $i++)
  {
    echo $var[$i];
  }
?>

Gruß

In Deinem oberen Code hast Du aber auch keine Variablen erzeugt oder Deren Name geändert die Variable 1-4 hast Du ja festgelegt und die heißen auch so bis Programmende. In der Schleife fragst Du ja auch nur den Inhalt der Variablen ab die immer noch den gleichen Namen tragen, Du hast lediglich für das echo den Namen zusammengebaut aus einer Zählvariablen und einem String. Aber was der Fragesteller genau damit erreichen will ist mir nicht klar und mit bekanntem Kontext ginge es sicher eleganter.

0
@myerscola

Der Fragesteller hat ja auch nicht direkt geschrieben, dass er Variablen erzeugen will. Das wäre aber natürlich auch kein Problem:

<?php
  $arr = array('Hallo', ' ', 'Welt', '!');

  for ($i=0; $i<count($arr); $i++)
  {
    ${'var'.$i+1} = $arr[$i];
  }

  echo $var1.$var2.$var3.$var4;
?>

Der Sinn solcher Konstrukte ist natürlich sehr zweifelhaft aber da muss uns der Fragesteller schon helfen.

0
@Babelfish

Der Fragesteller sprach vom Titel der Variable, das habe ich mal als den Namen der Variable verstanden. Weil der Inhalt kann ja kein Problem sein. Aber sowas würde ich nie schreiben, das ist ja unberechenbar.

0
@myerscola

Ich habe das auch so verstanden aber der Fragesteller hat halt nicht dazu gesagt, ob er variable Variablen auslesen oder setzen will. Nun hat er zwei Beispiele und kann zur Not beides machen.

Die einzige sinnvolle Einsatzmöglichkeit habe ich bisher bei einem CMS gesehen, wo damit Callback-Funktionen für Hooks zusammengebaut wurden. Bei normalen Variablen sollte man so was tunlichst unterlassen.

0

Hilft dir ein Array weiter?

Ich kann dem hier nur zustimmen. Variablen dynamisch zu erzeugen, mag in Deinem Fall zunächst sinnvoll zu erscheinen, ist es aber nur seeeehr selten.

Wenn Du eine Variable mit einer variablen Anzahl von Werten füllen musst - weil nicht klar ist wieviele Werte Du brauchst - ist ein Array genau richtig. Dort kannst Du mit array_push() beliebig viele "Zeilen" anhängen.

$DeinArray = array( a => 54, b => 50, c => 2 )

$weitereZeile = array(d => 1);

mit array_push($DeinArray, $weitereZeile) kannst du hier nun das array $weitereZeile in dein ursprüngliches array pushen.

Wir haben hier also nun die variable $DeinArray (ist ein Array aus mehreren Arrays) mit den Variablen $a, $b, $c und $d gefüllt. Diese haben jeweils die int-Werte 54,50,2 und 1. Das ist ein Mehrdimensionales Array- Ein Array aus Arrays.

Für Dich sollte es reichen ein einfaches Array zu nutzen:

$einfachesArray = array(1,2,3,4)

Du füllst das in Deiner Schleife, die Du ansprichst dann so:

$einfachesArray = array(); for ($i = 1; $i <= 10; $i++) { array_push($einfachesArray, $i); }

Das ergibt dann:

$einfachesArray(1,2,3,4,...,10)

Zudem bietet ein array auch viele weitere Funktionen, wie suchen im array, zeilen entfernen, sortieren, usw. usw. http://de2.php.net/manual/de/ref.array.php

Bitte beachte, dass ich die Syntax hier für Dich so einfach wie möglich gehalten habe. BITTE schau Dir die jeweiligen Funktionen genau an - nicht einfach copy&paste machen ;)

LG

0

Danke Für die Antworten, und tut mir leid wegen der undeutlichen Frage!

Ich will 3 Datensätze aus einer MYSQL-Datenbank ausgeben lassen und diese dann "wild" auf der seite verstreuen. ich dachte, dass ich die variablen mit html und nem positionierten div dann verteilen kann, wie ich will...

bin offen für andere vorschläge!!

danke liebe Grüße Xaverx

Die positionierung der Datensätze - (programmieren, html, Programmierung)

Was möchtest Du wissen?