Die for-Schleife soll variable Variablen erzeugen - Nur wie ???
N2O
- php
Hallo allerseits,
ich probiere jetzt bereits seit ner halben Stunde (!) an einem eigentlich doch so simpel anmutenden Skript herum und bevor mir die Hutschnur platzt, frage ich doch lieber das Forum meines Vertrauens.
Also, ich möchte so eine Art ultrakleine Datenbank haben, die für jeden Wert ein Array mit zwei Werten hat. Dann habe ich da ein Formular, dessen Variablen auch zu einem Array vermurckst werden und nun soll das Skript prüfen, ob das, was dort eingegeben wurde auch in der Datenbank als Wertepaar enthalten ist.
Mein einziges Problem ist, wie ich untenstehende IF-Schleife richtig schreibe. Er soll ja quasi immer innerhalb der FOR Schleife prüfen, ob das Wertepaar in $wert1, in $wert2 - also eben in $wert.$i - enthalten ist. So wie ich das denke, funktioniert es aber nicht. Ich habe es auch schon mit "Variablen Variablen" (http://de2.php.net/manual/de/language.variables.variable.php) probiert, das will aber auch nicht funktionieren.
Wer kann helfen?
$wert1 = array("hanni","1");
$wert2 = array("nanni","2");
// $wert... = ....;
$pruef=array(strtolower($feld1),strtolower($feld2)); // kommt aus dem Formular
for ($i=0;$i<=10;$i++)
{
if ($pruef[0]==$wert.$i[0] AND $pruef[1]==$wert.$i[1]) // FUNKTIONIERT SO NICHT :(
{
echo "JA -- ";
} else {
echo "NEIN -- ";
}
}
Gruß
Lachgas
if ($pruef[0]==$wert.$i[0] AND $pruef[1]==$wert.$i[1])
Also ich kann mich ja irren, aber wenn da tatsächlich 'AND' steht,
dann glaub ich auch nich, dass das funktionieren kann.
Wie wärs denn mit nem '&&'?
Und If-Schleifen kenn ich auch keine...
Grüße.
Holladiewaldfee,
Also ich kann mich ja irren, aber wenn da tatsächlich 'AND' steht,
dann glaub ich auch nich, dass das funktionieren kann.
Du irrst, und zwar ganz gewaltig.
http://www.php.net/manual/en/language.operators.logical.php
Es gibt durchaus einen Unterschied zwischen "and" und "&&", aber der kommt hier nicht zum Tragen, s.h. auch http://www.php.net/manual/en/language.operators.php#language.operators.precedence.
Ciao,
Harry
O holla!
Danke! Ist mir bisher völlig entgangen...
if ($pruef[0]==$wert.$i[0] AND $pruef[1]==$wert.$i[1])
Also ich kann mich ja irren, aber wenn da tatsächlich 'AND' steht,
dann glaub ich auch nich, dass das funktionieren kann.Wie wärs denn mit nem '&&'?
Ich kenne aber auch AND. http://www.php.net/manual/de/language.operators.logical.php
Und If-Schleifen kenn ich auch keine...
If-Bedingungen. Entschuldige.
Holladiewaldfee,
$wert1 = array("hanni","1");
if ($pruef[0]==$wert.$i[0]
was soll das denn sein? $wert ist ein Array, $i nicht und das ganze verknüpfst Du als String?! Das ist Quatsch mit Soße.
Außerdem: Was hast Du in der halben Stunde gemacht, wenn Dir das nicht aufgefallen ist?
Ciao,
Harry
$wert1 = array("hanni","1");
if ($pruef[0]==$wert.$i[0]was soll das denn sein? $wert ist ein Array, $i nicht und das ganze verknüpfst Du als String?! Das ist Quatsch mit Soße.
Sorry, vielleicht habe ich mich da falsch ausgedrückt: Ich meine dass, nachher in der if-Bedingung folgendes steht:
if ($pruef[0]==$wert1[0])
if ($pruef[0]==$wert2[0])
if ($pruef[0]==$wert3[0])
usw. !
Natürlich soll nicht das Array mit dem String verknüpft werden oder ähnliches !
Gruß
Lachgas
Holladiewaldfee,
Sorry, vielleicht habe ich mich da falsch ausgedrückt: Ich meine dass, nachher in der if-Bedingung folgendes steht:
if ($pruef[0]==$wert1[0])
Ach so ;-)
Sag das halt gleich.
Dann willst Du wohl etwas in der Art
if($pruef[0]==${'wert'.$i.'[0]})
...
http://www.php.net/manual/en/language.variables.variable.php
Aber mal anders gefragt: Warum legst Du den Krempel nicht gleich als zweidimensionales Array an?
Ciao,
Harry
Aber mal anders gefragt: Warum legst Du den Krempel nicht gleich als zweidimensionales Array an?
Das ist doch in diesem Fall gar nicht nötig, oder ?
Gruß
Lachgas
Holladiewaldfee,
Das ist doch in diesem Fall gar nicht nötig, oder ?
Naja, wenn Du statt
$wert1 = array("hanni","1");
$wert2 = array("nanni","2");
lieber gleich
$wert = array(array("hanni","1"),
array("nanni","2"));
schreibst, dann kannst Du nachher die Auswertung mit
for ($i=0, $j=count($wert);$i<$j;$i++)
{ if ($pruef===$wert[$i])
... }
machen, was ich für ungleich einfacher, flexibler und eleganter halte.
http://www.php.net/manual/en/language.operators.array.php
Ciao,
Harry
DAMIT hast du alle meine Probleme gelöst!!
Und du hast Recht: Es ist wirklich viel eleganter, schon allein wegen des count().
Vielen Dank!
Gruß
Lachgas
if($pruef[0]==${'wert'.$i.'[0]})
...
Das funktioniert ebenfalls nicht.
*verzweifel*
Gruß
Lachgas
Holladiewaldfee,
if($pruef[0]==${'wert'.$i.'[0]})
...
Das funktioniert ebenfalls nicht.
Es war auch ein Syntaxfehler drin.
Aber mal ehrlich, den hat doch PHP sicher angemeckert, oder?
if($pruef[0]==${'wert'.$i.'[0]'})
Wenn das immer noch nicht geht probier mal
$bla = 'wert'.$i.'[0]';
if($pruef[0]==$$bla)
was aber eigentlich das selbe sein sollte.
Ciao,
Harry
Hi Harry,
if($pruef[0]==${'wert'.$i.'[0]'})
Wenn das immer noch nicht geht probier mal
auch wenn N2O vernünftigerweise eh inzwischen beim Array gelandet ist - also nur für's Archiv:
${'wert' . $i}[0]
Gruß,
Andreas.