Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Problem mir array_search

Hallo, ich habe folgendes Problem:
ich will einen Wert an einen Array geben, wenn dieser Wert im Array bereits drin steht, dann soll er aus dem Array gelöscht werden, ansonsten soll er hineingeschrieben werden.

Code:                   In Zwischenablage kopieren (nur IE)
1">

Der Wert in $angewaehlt ist ein array, zunächst hatte ich die boolsche Variable in array_search nicht belegt, da ging gar nichts...
Jetzt funktioniert der Script bei den Werten

$angewaehlt = Array ( [0] => 1 [1] => 29 [2] => 1 )
$angewaehlt = Array ( [0] => 1 [1] => 29 [2] => 2 )
$angewaehlt = Array ( [0] => 1 [1] => 29 [2] => 3 )
$angewaehlt = Array ( [0] => 1 [1] => 29 [2] => 4 )
usw.

aber bei folgendem Wert, löscht er es nicht wie vorgesen, sonder schreibt $angewaehlt x mal in $_SESSION['geoeffnet']...
$angewaehlt = Array ( [0] => 1 [1] => 29 [2] => 0 )

Ok, meine Fragen:
1. Gibts villeicht eine andere elegantere Lösung für die Aufgabe?
2. Warum das Problem mit array_search, und wie kann ich es lösen?


P.S in_array funktioniert mit allene Belegungen von $angewaehlt einwandfrei, ich weiß nur gerade nicht wie man einen Wert aus einem array löscht, wenn man seinen key nicht kennt. Ok, ich könnte ihn mit foreach durchlaufen lassen, aber kann ja wohl nicht die Lösung sein...
Hier gehts zum Orginal Eintrag "Problem mir array_search" im Forum

Antworten

ok, dummer Fehler von mir...
hatte nichts mit dem Wert von $angewaehlt zu tun, sonder mein Problemfall $angewaehlt = Array ( [0] => 1 [1] => 29 [2] => 0 ) hatte den Key = 0, das hat die if-Abfrage als false gewertet. Habe die Abfrage jetzt so geschriebn:

Code:                   In Zwischenablage kopieren (nur IE)
2">

die Anweisungen habe ich entsprechend vertauscht, funktioniert jetzt, bleibt also nur noch die erste Frage, ob das nicht eleganter geht?


2.

Wie soll es denn noch eleganter gehen als in einem simplen if() else() Konstrukt?
Du kannst das ganze natürlich in einer Funktion kapseln, aber obs das bringt..
Code:                   In Zwischenablage kopieren (nur IE)
3">

(ungetestet)

Was aber vielleicht eleganter geht ist die Rangehensweise an dein Problem an sich. Aber das kenne ich nicht.


3.

Danke für die Antwort,
ich hatte darauf spekuliert, dass es ne Funktion gibt, der man einen Array und ein Element übergibt und die dieses Element dann aus dem Array löscht, aber du hast recht, es würde den Script nur sehr unwesentlich verbessern...

Mein Probelm ist recht simpel. Es geht um ein Browsergame und da um das Inventar des Spielers. Es kann im Inventar Container geben, zum Beispiel Rucksäcke. Ist jeztz die Position eines Containers in $_SESSION[geoffnet] gespeichert, wird sein Inhalt auch gezeigt, wenn nicht, dann nicht.

Klickt der Spieler auf einen Container wird dessen Position($angewaehlt) an den besprochene Script übergeben, der die Position dann entweder hinzufügt oder löscht.
Es entsteht also der Effekt, dass man Container durch anklicken "öffnen" und "schließen" kann.


4.

Da fällt mir jetzt auch nichts eleganteres ein. Funktional ist es aber ja, das sollte genügen.


Hier gehts zum Orginal Eintrag "Problem mir array_search" im Forum
 
phpforum.de | Impressum