Mailinglisten-Archive |
Norbert Pfeiffer schrieb: > Hai, > >>> na-ja, es scheint halt doch etwas zu dauern, bis man alle >>> Bug-Moeglichkeiten von PHP ausgetestet hat. >> Welche Bugs? >> Die in PHP oder die in dem geschrieben Script? > beide Arten ... ;-) > >>> Damit auch andere testen koennen, gibt es eine Adresse: >>> http://www.uris.de/test/search.key.php >> würde eine Suche nach '' nicht auch den Schlüssel 0 finden? > nein! > siehe aktualisiertes Demoscript. ja stimmt, da hatte ich ein falsches Beispiel > Ansonsten ist es immer besser, etwas kurz zu testen, > bevor man sich oeffentlich den Kopf zermartert: brauch ich nicht (den Kopf zermartern) - denn ich weis es > <?php > var_dump(array('0'=>'zero-String', 0 =>'zero-Number')); > var_dump(array( 0 =>'zero-Number','0'=>'zero-String')); > ?> > beendet alle Fragen, weil: > PHP definitionsgemaess alles auf String castet. ??? Blödsinn (sorry) in dem obigen Fall wird aus "0" immer 0, weis nicht wo hier irgendwas zum String geändert wird oder du diesen Schluss ziehst oder du hast eine gänzlich andere PHP Version als ich und als die die im Handbuch beschrieben wird ... man sollte vielleicht mal im Handbuch lesen ... > Genau dies macht auch das Testscript ... warum auch immer, und was auch immer das mit meinem Ursprünglich angesprochenen Problem zu tun hat, den das besteht immer noch: denn "01" == 1 aber "01" !== 1 und das beachtet dein Script nicht <?php function arrayKeyExistsR($array, $search, $typesafe = false) { foreach ($array as $key => $val) { if (! $typesafe && $key == $search) { return true; } elseif ($typesafe && $key === $search) { return true; } elseif (is_array($val)) { return arrayKeyExistsR($val, $search, $typesafe); } } return false; } $array = array( '01' => 'isset', ); echo "\n<br />" . 'found with loose type comparison:'; print_r(arrayKeyExistsR($array, 1, false)); echo "\n<br />" . 'found with strict type comaprison:'; print_r(arrayKeyExistsR($array, 1, true)); ?> -- Sebastian
php::bar PHP Wiki - Listenarchive