![]() 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