| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
V4hn Moderator
|
arraysuche und false |
|
|
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 |
|
  |
Breezzer Mitglied
|
 |
|
|
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 |
|
 |
V4hn Moderator
|
 |
|
|
| 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 |
|
 |
Breezzer Mitglied
|
 |
|
|
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 |
|
 |
kruemel Mitglied
|
 |
|
|
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.....*  |
|
|
|
| 02 Apr 2006 16:58 |
|
 |
V4hn Moderator
|
 |
|
|
| kruemel hat Folgendes geschrieben: | *für die Antwort musste ich mich extra registrieren.....*  |
schön das ein Kritiker mehr an Bord ist
willkommen
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( ),
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 |
|
 |
Breezzer Mitglied
|
 |
|
|
es ist schon richtig mit 0 anzufangen, da die 0 in der informatik eben die erste natürliche zahl ist; vielleicht garnicht sooo falsch
aber es sollte auch nur eine lösung für dein problem sein und nicht die einzigste
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 |
|
 |
|