arraysuche und false


 
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Hilfe für Webmaster -> PHP / MySQL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
V4hn
Moderator

Beitragarraysuche und false Antworten mit Zitat

axinio Internet Marketing
Hattet ihr das Problem auch schonmal? :
Man schreibt sich irgendwelche daten, die man verwerten will in einen Array
und lässt darin bestimmte werte suchen (array_search).
Jetzt gibt diese Funktion ja den index mit dem gesuchten Wert oder false zurück, wenn der gesuchte Wert nicht gefunden wurde...
Blöderweise ist false in der Informatik nur durch 0 definiert.........
Wer bitte sagt mir jetzt, dass der gesuchte Wert nicht in dem Array mit Index [0] liegt?
Ich hab bis jetzt noch keine vernünftige Lösung dafür gefunden...

_________________
01 Apr 2006 16:29
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Breezzer
Mitglied

Beitrag Antworten mit Zitat

entweder....

- du lässt array[0] einfach frei
- du weisst wo welche informationen gespeichert sind und fragst dann mit if array[x] == "hallo" ab ob der wert vorhanden ist
- du prüfst array[0] vor/nach/während dem suchen ab

_________________
BS-Media

Kauft bei Amazon indem ihr diesem Link folgt und tut was gutes! Jede Provision die so erlangt wird fliesst einem UNICEF-Projekt zu.
01 Apr 2006 20:25
Benutzer-Profile anzeigen Private Nachricht senden
V4hn
Moderator

Beitrag Antworten mit Zitat

Breezzer hat Folgendes geschrieben:
entweder....
- du lässt array[0] einfach frei
- du weisst wo welche informationen gespeichert sind und fragst dann mit if array[x] == "hallo" ab ob der wert vorhanden ist
- du prüfst array[0] vor/nach/während dem suchen ab

wie gesagt: ich meinte eine ordentliche Variante...
ich find es dumm, immer einen Sonderfall berücksichtigen zu müssen...
und man fängt nunmal mit 0 an und nicht mit 1...
ich werd jetzt dazu übergehen, mir eine eigene Fkt zu schreiben,
die -1 ausgibt, wenn der Datensatz nicht erfunden wurde...
btw. freilassen macht sich schlecht, wenn man mit array() und array_shift() arbeitet...

_________________
02 Apr 2006 09:54
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Breezzer
Mitglied

Beitrag Antworten mit Zitat

ich find die varianten ordentlich...^^

hast schon recht, da haben die php-entwickler wohl net dran gedacht...naja, ich nütz die funktion so gut wie nie, da ich eben normal immer weiss, wo etwas stehen sollte. klappt meist ganz gut^^

kannst ja aber mal deine funktion schreiben, wenn sie fertig hast

_________________
BS-Media

Kauft bei Amazon indem ihr diesem Link folgt und tut was gutes! Jede Provision die so erlangt wird fliesst einem UNICEF-Projekt zu.
02 Apr 2006 15:56
Benutzer-Profile anzeigen Private Nachricht senden
kruemel
Mitglied

Beitrag Antworten mit Zitat

Also ich finde die Ideen von Breezzer gar nicht mal so schlecht.

Welchen Wert sollte array_search() denn zurückgeben, wenn nichts gefunden wurde?
0, -1, findichnicht... das sind doch alles AUCH gültige Schlüssel eines Arrays.
Es kommt doch immer drauf an, in welcher Art das Array erstellt wurde.
PHP-Code:
1
2
3
$array= array("PHP","b"=>"ASP","findichnicht"=>"PERL");
$array= array("start"=>"PHP","ASP","PERL");
$array= array("-2"=>"PHP","-1"=>"ASP","PERL"); 

Das ergibt dann folgende Arrays:
    Array ( [0] => PHP [b] => ASP [findichnicht] => PERL )
    Array ( [start] => PHP [0] => ASP [1] => PERL )
    Array ( [-2] => PHP [-1] => ASP [0] => PERL )

Du siehts, V4hn, dass nicht unbedingt mit 0 angefangen werden muß und es wird nicht der Index zurück gegeben, sondern der Schlüssel. Das mag jetzt spitzfindig sein, aber es ist so.
Was machst Du jetzt, wenn Deine selbstgebaute Funktion im dritten Array nach ASP suchen soll und -1 zurück gibt? Ist der Wert dann nicht gefunden worden?
Du wirst nicht umhin kommen, Dir die Sonderfälle, die Du dumm findest, genau anzuschauen und vor allem zu beachten.

Aber ich glaube, es ist hier ausreichend, bei array_search() = 0 in einer if-Abfrage zu schauen, ob $array[0] nicht den gesuchten Wert enthält. (An welcher Stelle im Array der Schlüssel 0 auch sei.)


*für die Antwort musste ich mich extra registrieren.....* Laughing
02 Apr 2006 16:58
Benutzer-Profile anzeigen Private Nachricht senden
V4hn
Moderator

Beitrag Antworten mit Zitat

kruemel hat Folgendes geschrieben:
*für die Antwort musste ich mich extra registrieren.....* Laughing

Rolling Eyes schön das ein Kritiker mehr an Bord ist Wink
willkommen Very Happy

Es gibt immer sonderfälle, DA kommt man wirklich nicht drum rum...
aber einen "normalen" Fall als Sonderfall behandeln zu müssen,
finde ich mehr als dumm...
normal deshalb, weil es zum Beispiel auch Funktionen wie explode() gibt, die eigendlich sehr nützlich zum parsen von Strings sind.
Nur geben diese einen Array beginnend bei 0 zurück(Wink),
was zeigt, dass es sehr verbreitet ist bei 0 zu beginnen, da es sich oft als vorteilhaft erweist...
Sonst hast du natürlich recht, es ist codebasierend, ob man mit 0 oder -1 besser dran ist...
Theoretisch bräuchte man einfache Flags, wie in Asm, mit denen man kennzeichnen kann, wenn etwas nicht gefunden wurde...

_________________
02 Apr 2006 17:55
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Breezzer
Mitglied

Beitrag Antworten mit Zitat

es ist schon richtig mit 0 anzufangen, da die 0 in der informatik eben die erste natürliche zahl ist; vielleicht garnicht sooo falsch Smile

aber es sollte auch nur eine lösung für dein problem sein und nicht die einzigste Wink

ihr wisst ja, viele wege führen nach rom - manche schneller, manche langsamer

_________________
BS-Media

Kauft bei Amazon indem ihr diesem Link folgt und tut was gutes! Jede Provision die so erlangt wird fliesst einem UNICEF-Projekt zu.
02 Apr 2006 18:01
Benutzer-Profile anzeigen Private Nachricht senden
axinio Internet Marketing
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Hilfe für Webmaster -> PHP / MySQL Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu: