in_array case sensitive bug?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • in_array case sensitive bug?

    Ich bin auf PHP 5.3.0 und verwende in_array
    PHP: in_array - Manual
    Dort steht ist needle ein String, wird case sensitive gesucht. Fein!

    Aber ich habe folgenden Code:
    PHP-Code:
    <?php

    $a 
    = array('sendEmailOnPm' => true);
    $setting 'sendEmailOnPM'// case difference

    var_dump(in_array($setting$a)); // is true!

    var_dump($a[$setting]); // fail

    ?>
    Ergebnis:
    Code:
    boolean true
    
    
    ( ! ) Notice: Undefined index: sendEmailOnPM in D:\Webserver\www\test.php on line 8
    Call Stack
    #	Time	Memory	Function	Location
    1	0.1824	321408	{main}( )	..\test.php:0
    
    null
    PHP bug found?
    SQL Injection kitteh is...

  • #2
    in_array() sucht nach Array-Werte und nicht nach Array-Schlüssel. Bei dir ist der Wert true und der Schlüssel 'sendEmailOnPm'. Du suchst jetzt nach dem Wert 'sendEmailOnPM'. ('sendEmailOnPM' == true) ergibt true und somit sagt in_array(), dass der Wert vorhanden ist.

    Du brauchst isset() oder array_key_exists().

    PHP-Code:
    isset($a[$setting]) 
    PHP-Code:
    array_key_exists($setting$a
    http://de.php.net/manual/en/function.in-array.php
    http://de.php.net/manual/en/function.isset.php
    http://de.php.net/manual/en/function...key-exists.php
    Zuletzt geändert von h3ll; 08.01.2010, 12:53.

    Kommentar


    • #3
      Argh! Noob fehler.

      Danke.

      Zumindest hab ich es durch Unit Tests entdeckt. Hurray
      SQL Injection kitteh is...

      Kommentar

      Lädt...
      X