PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: Variable mittels Index hochzählen?


ooAlbert
2007-04-19, 11:08:59
Hi,

ist es möglich einen variablennamen mit einem vaibalen index zu versehen?

beispiel:

ich habe $abc1a, ..., $abc10a;

jetzt wollt ich die alle mittels for-schleife hochzählen und bearbeiten... deshalb dachte ich an sowas wie: $abc.$zaehler.a; (das geht so natürlich nicht :) )

mfg

Unfug
2007-04-19, 11:19:47
Zur Laufzeit eine Variable erstellen geht nicht.

ooAlbert
2007-04-19, 11:28:41
naja das problem ist halt das der index mitten im namen steht. außerdem sind die werte schon in den teilvariablen, also die gibt es bereits.

Unfug
2007-04-19, 11:29:18
Vielleicth so?

<?
$i = 0;
$daten = array();
$foo = "bar";
while ($i<10)
{
array_push($daten, $foo.$i);
$i++;
}

print_r($daten);


?>

???

edit: ich merke grad das ist schwachsinnig. ich übergebe ja nur die "Werte" an das Array und nicht die Variablen selbst...

Sorry, kann dabei nicht weiterhelfen.

ooAlbert
2007-04-19, 12:27:05
also ich hab mal etwas gesucht und dann sowas gefunden:

$b = ${$a.$c} ... hat aber nicht gefruchtet, oder ich amch das halt falsch.

P2oldi
2007-04-19, 13:06:48
aber wäre es nicht trotzdem eine Möglichkeit ein zwei-dimensionales Array zu definieren, meinetwegen abc[10][26]. Dann würde abc[0][0] abc1a entsprechen, abc[9][25] halt abc10z. Ist zwar von den Namen dann nicht mehr so eindeutig, aber sollte so nutzbar sein wie Du das vorhast

Marscel
2007-04-19, 13:53:31
Zur Laufzeit eine Variable erstellen geht nicht.

eval()?

Coda
2007-04-19, 13:59:43
Zur Laufzeit eine Variable erstellen geht nicht.
Oh doch. PHP kann das, aber ich weiß grad nicht auswendig wie...

eXistence
2007-04-19, 14:10:51
ist ewig her, dass ich was mit PHP gemacht habe, aber folgendes sollte eigentlich funktionieren:

<?
$var = "test";
$$var = 123;
?>

erzeugt quasi on-the-fly eine variable, die 'test' heißt und weist ihr den Wert 123 zu.

Ich kanns leider grad nicht testen, vielleicht trügt mich meine erinnerung auch :)

Marscel
2007-04-19, 14:35:34
<?php
$bla1blub = 'a';
$bla2blub = 'b';
$bla3blub = 'c';
// ...

for($i = 1; $i <= 3; ++$i)
{
eval('print $bla'.$i.'blub;');
}
?>

Gibt 'abc' aus... dasselbe geht natürlich auch umgekehrt für das Zuweisen.

Thomas(:
2007-04-19, 14:44:02
Zur Laufzeit eine Variable erstellen geht nicht.
Wann soll man sie denn sonst erzeugen :|

Coda
2007-04-19, 14:49:08
Für eine nicht interpretierte Sprache sind Variablen nach dem Kompilieren nur noch Speicheraddressen und können nicht mehr erzeugt werden.

Tommes
2007-04-19, 17:08:00
<?php
$bla1blub = 'a';
$bla2blub = 'b';
$bla3blub = 'c';
// ...

for($i = 1; $i <= 3; ++$i)
{
$varname = "bla".$i."blub";
echo $$varname;
}
?>

Wobei der Einsatz von Arrays viel sinnvoller ist.

Kinman
2007-04-19, 18:52:36
hm.. ich löse sowas immer mit arrays


$a['test'] = "hallo";

$a[$a['test']] = " wie geht's?";

echo($a['test'] . $a['hallo']); // ==> hallo wie gehts?


EDIT: Ansonst, wie schon genannt: eval http://www.php.net/manual/de/function.eval.php

Marscel
2007-04-19, 21:40:34
Wobei der Einsatz von Arrays viel sinnvoller ist.

Klar, auf jeden Fall, aber vielleicht hat der Threadstarter ja Gründe, dass es nicht so gemacht wird...