Arrays abfragen
verona
- php
0 Sönke Tesch0 verona0 Bernhard Mecl0 verona0 Sönke Tesch0 verona0 Sönke Tesch0 verona
0 Sönke Tesch
<?php
if ($con[$menu]==$menu)
{
$con =array();
$con[$menu]='topon';
}
else
{
$con =array();
$con["$menu"]='topoff';
}
print $con[punkt1];
print $con[punkt2];
?>
$menu kommt aus dem Link. href="index.php?menu=punkt1
Ich würde gerne die Namen der ArrayZelle abfragen und nicht den Inhalt. Was ich hier mache, fragt den Inhalt ab, oder? Wer weiß Rat.
if ($con[$menu]==$menu)
Ich würde gerne die Namen der ArrayZelle abfragen und nicht den Inhalt. Was ich hier mache, fragt den Inhalt ab, oder? Wer weiß Rat.
Du fragst hier ab, ob die Zelle mit Namen $menu den Inhalt $menu hat.
Was meinst Du mit "Ich würde gerne den Namen der Zelle abfragen"? Das geht insofern schon prinzipiell nicht, weil Du eine Zelle erstmal über Ihren Namen identifizieren mußt, um Informationen wie Inhalt, Inhaltstyp oder auch den Namen über sie zu bekommen.
Anders gesagt: Willst Du den Namen wissen, mußt Du erstmal den Namen haben, um die Zelle überhaupt ansprechen zu können - Du drehst Dich im Kreis.
Der einzig sinnvolle Ort, um nach dem Namen zu fragen, ist innerhalb einer Schleife, in der ein Feld automatisch durchlaufen wird:
while (list($name,$inhalt)=each($feld))
{
// In $name steht jetzt der Name bzw. Index des Feldes,
// in $inhalt der -Überraschung- Inhalt.
}
Alternativ zu while kann man auch foreach benutzen:
foreach ($feld as $name => $inhalt)
So eine Schleife brauchst Du aber anscheinend nicht.
Möchtest Du nur wissen, ob eine Zelle namens $menu existiert, kannst Du etwas in der Richtung
if (isset($con[$menu]))
benutzen.
Und möchtest Du etwas ganz anderes, mußt Du das wohl nochmal erklären :)
Gruß,
soenk.e
Ich versuche es mal mit meinen Worten.
Ich habe jede Menge prints
print $con[punkt1]; usw.
Da habe ich ja schon einmal den Namen. Hier "punkt1".
Wenn jetzt jemand über den Link hier "index.php?menu=punkt1" auf die Seite kommt, dann habe ich eine Var mit dem Wert "punkt1".
Wenn jetzt der Wert von $menu gleich dem Namen der Arrayszelle $con[n] ist, und dass ist bei print $con[punkt1] der Fall, dann soll aus $con[punkt1] "on" oder "off" werden.
Wenn jetzt der Wert von $menu gleich dem Namen
der Arrayszelle $con[n] ist, und dass ist bei
print $con[punkt1] der Fall, dann soll aus
$con[punkt1] "on" oder "off" werden.
$con[$menu]=='on' ? $con[$menu]='off' : $con[$menu]='on';
Denkst Du nur zu kompliziert, oder habe ich das Problem nicht ganz verstanden?
Wenn jetzt der Wert von $menu gleich dem Namen
der Arrayszelle $con[n] ist, und dass ist bei
print $con[punkt1] der Fall, dann soll aus
$con[punkt1] "on" oder "off" werden.
$con[$menu]=='on' ? $con[$menu]='off' : $con[$menu]='on';
Denkst Du nur zu kompliziert, oder habe ich das Problem nicht ganz verstanden?
Nein, nicht ganz. Es ist folgendes Problem. Ich habe mehrere $con und wenn eines "on" ist, müssen die anderen "off" sein.
wenn index.php?menu=punkt1
print $con[punkt1]; "on"
print $con[punkt2]; "off"
print $con[punkt3]; "off"
print $con[punkt4]; "off"
Nein, nicht ganz. Es ist folgendes Problem. Ich habe mehrere $con und wenn eines "on" ist, müssen die anderen "off" sein.
wenn index.php?menu=punkt1
print $con[punkt1]; "on"
print $con[punkt2]; "off"
print $con[punkt3]; "off"
print $con[punkt4]; "off"
In dem Falle wäre weitaus sinnvoller, statt eines Feldes einen einfachen Typ zu benutzen, denn der enthält zu jedem Zeitpunkt automatisch nur einen Wert: $con ist dann entweder "punkt1", "punkt2", "punkt3" oder "punkt4".
Ein Feld zu nehmen und dort sämtliche Einträge umzuschalten, damit ja immer nur einer "on" ist, ist viel zu aufwendig und vor allen Dingen ganz extrem fehlergefährdet.
Gruß,
soenk.e
Habe oben neu angefangen!
<a href="http://forum.de.selfhtml.org/?m=132666&t=24013">weiter geht es hier!</a>
Habe oben neu angefangen!
Schade. Ich kann Dir wie gesagt nur raten, entweder einen einfachen Variablentyp zu benutzen (<?m=132597&t=23984>), dann hast Du keine Probleme damit, daß wirklich nur ein Wert "on" bzw. vorhanden ist. Anscheinend willst Du noch etwas bei den <a>s ausgeben, daß würdest Du dann in einer Funktion erledigen:
function print_onoff($menu)
{
switch ($menu)
case "punkt1": echo "on"; break;
case "punkt2": echo "on"; break;
case "punkt3": echo "on"; break;
case "punkt4": echo "on"; break;
default: echo "off";
};
Und weiter unten:
<a href="index.php?menu=punkt1" <?php print_onoff("punkt1"); ?>>punkt1</a>;
Der ganze $con[]-Kram fällt ersatzlos weg.
Auf diese Weise erhälst Du nur dort, wo $menu="punktX" ist (also bei "index.php?menu=punktX"), auch die Ausgabe "on", alle anderen ergeben automatisch "off".
Willst Du aus welchem Grund auch immer wirklich mit einem Feld $con[] arbeiten, hast Du das angesprochene, schwerwiegende Problem, daß Du bei jeder Änderung an einer $con[]-Zelle alle anderen auch ändern mußt (es darf ja nur maximal eine Zelle "on" enthalten):
while (list($index,$inhalt)=each($con))
{
if ($index==$menu)
$con[$index]=="on";
else
$con[$index]=="off";
};
Diese Schleife mußt Du bei jeder Änderung an $con aufrufen (siehe auch <?m=132512&t=23984>). Nicht ganz so nett IMHO.
Falls Dir sonst keiner helfen kann, solltest Du vielleicht ganz vorne anfangen und erstmal beschreiben, was mit dieser Aktion überhaupt auf dem Bildschirm passieren soll.
Gruß,
soenk.e
Danke dir,
worum es genau geht?! Es ist ursprünglich ein CSS-Problem im Zusammenhang mit PHP. Ich will damit die Stylesheets auswechseln. Quasi eine Art manuelles Pseudo-Format. Da ich mit den Links jedesmal dieselbe "index.php" aufrufe, erhalte ich leider nie die gewünschte Pseudo-Formatierung für "Visited" oder "Active". Die "index.php" wird ja jedesmal neu gesendet.
Also habe ich mir gedacht, die Styles einfach auszutauschen, je nach dem welches Menu aufgerufen wird. Das mache ich über $menu aus den Links heraus(...href="index.php?menu=punkt1...)!
Die Links haben also entweder den Zustand "on" oder den Zustand "off". Wenn also jemand den link aufruft, dann soll durch PHP aus
<a class="<?php print $con["print1"; ?>" href="index.php?menu=punkt1...>
folgendes in HTML werden.
<a class="on" href="index.php?menu=punkt1...>
oder eben
<a class="off" href="index.php?menu=punkt1...>
V
Ich habe jede Menge prints
print $con[punkt1]; usw.
Das sollte
print $con["punkt1"];
sein. Der Index ist ein Text und Texte gehören in Anführungszeichen. Aber das nur nebenbei.
Da habe ich ja schon einmal den Namen. Hier "punkt1".
Wenn jetzt jemand über den Link hier "index.php?menu=punkt1" auf die Seite kommt, dann habe ich eine Var mit dem Wert "punkt1".
Nein, Du hast eine Variable $menu mit dem Wert "punkt1".
Wenn jetzt der Wert von $menu gleich dem Namen der Arrayszelle $con[n] ist,
Was ist $con["n"] (oder $con[$n]?), das war in Deinem vorigen Code nicht drin?
und dass ist bei print $con[punkt1] der Fall, dann soll aus $con[punkt1] "on" oder "off" werden.
Nochmal: Du möchtest, daß wenn $menu den Namen einer Zelle bzw. ihres Indexes (also z. B. "punkt1") enthält, daß dann dieses Zelle einen bestimmten Wert erhält?
Da stellt sich mir aber immernoch die Frage, mit was Du $menu denn nun tatsächlich vergleichen möchtest? Siehe oben: Was ist $con["n"] oder das $n in $con[$n]?
Gruß,
soenk.e