Hi,
1. ich habe auf php.net geschaut und nichts gefunden!
Ich habe ein assoziatives Array und möchte den Schlüssel vor und nach einem bestimmten Schlüssel haben. Ich muss also irgendwie meinen Schlüssel finden um dann den Schlüssel davor und danach zu bekommen. Wie mache ich das?
Ich müsste irgendwie durchzählen und bei meinem Schlüssel stoppen, dann könnte ich mit next() bzw. prev() auf die anderen Schlüssel zugreifen.
Ich dachte, dass das komfortabel mit einer foreach-Schleife geht. Wenn der jew. Schlüssel meinem gesuchten String entspricht stoppe ich, besetze zwei Variablen mit next() und prev(). Aber prev() / next() innerhalb meiner Schleife zu vergeben klappt nicht.
Und außerhalb klappt es nur, solange der gesuchte Schlüssel nicht der erste oder letzte ist:
<?php
$seite = "seite2"; #bei seite1 oder seite3 geht es nicht
$seiten = array("seite1" => "Seite 1", "seite2" => "Seite 2", "seite3" => "Seite 3");
foreach($seiten as $s => $title)
{
if($s == $seite) break;
}
$weiter = current($seiten);
$zurueck = prev($seiten);
$zurueck = prev($seiten);
?>
(Überhaupt verstehe ich nicht so recht, was mir current/next/prev bringen, wenn ich so oder so beim ersten Element anfangen muss).
Da es wohl nicht einfach geht - wie gehts schwierig?
So klappts, ist aber ein ganz klein wenig umständlich:
<?php
$seiten = array("seite1" => "Seite 1", "seite2" => "Seite 2", "seite3" => "Seite 3");
$s0 = each($seiten); #erzeuge für jedes Schlüssel-Wertepaar
$s1 = each($seiten); #ein eigenes Array
$s2 = each($seiten);
$anz = count($seiten); #Anzahl S-W-Paare im Array
for($i=0; $i < $anz; $i++) #Ermitteln welches Array meinem
{ #gesuchten Schlüssel entspricht
$s = "s".$i;
$s = $$s;
if($thema == $s[0])
{
$j = $i;
}
}
if($j != ($anz - 1)) #Variablen für Weiter-Link
{ #und -titel erzeugen
$weiter = $j + 1;
$weiter = "s".$weiter;
$weiter = $$weiter;
$weitertitle = $weiter;
$weiter = $weiter[0];
$weitertitle = $weitertitle[1];
}
else #War aktuelle Seite die erste,
{ #setzte Link zum Index
$weiter = "index";
$weitertitle = "Index";
}
if($j != 0) #Variablen für Zurück-Link
{ #und -titel erzeugen
$zurueck = $j - 1;
$zurueck = "s".$zurueck;
$zurueck = $$zurueck;
$zuruecktitle = $zurueck;
$zurueck = $zurueck[0];
$zuruecktitle = $zuruecktitle[1];
}
else #War aktuelle Seite die erste,
{ #setzte Link zum Index
$zurueck = "index";
$zuruecktitle = "Index";
}
?>