suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Kann ich die Funktion array_search() von PHP verwenden, um nach Situationen zu suchen, in denen die Werte selbst Arrays sind?

Ich habe eine Klasse, die ein statisches Array enthält, dessen Schlüssel Zeichenfolgen und Werte Arrays sind. Wenn ein bestimmter Array-Wert vorhanden ist, möchte ich seinen Schlüssel erhalten.

Ich dachte, der Code, der die Funktion array_search() verwendet, würde dies erreichen, aber er findet den Wert nicht und gibt stattdessen false aus. Ich dachte, der Parameter „streng“ könnte einen Unterschied machen, aber er scheint nicht zu funktionieren. Habe ich etwas falsch gemacht? Wie schreibe ich Suchcode am besten?

$ cat foo.php
<?php
class foo {
    static $name_to_bitnum = array(
        'Water Obstacle' => array('kind' => 'Facility', 'bitnum' => 5),
        'Driving' => array('kind' => 'Facility', 'bitnum' => 6),
        'Trails' => array('kind' => 'Facility', 'bitnum' => 7),
   );

    public static function bar($kind, $bitnum) {
        $search = array_search(array('kind' => $kind, 'bitnum' => $bitnum), self::$name_to_bitnum, $strict = false);
        // $search = array_search(self::$name_to_bitnum['Driving'], self::$name_to_bitnum, $strict = false);
        return $search;
    }
}
$foo = new foo();
echo var_dump($foo->bar('Driving', 6));
?>

$ php foo.php
C:xampp1826htdocsOSH0foo.php:21:
bool(false)

Mir ist aufgefallen, dass es erfolgreich war und die Zeichenfolge (7) „Driving“ ausgab, wenn ich die Codezeile auskommentierte und mit dem Wert des gesuchten Array-Elements in das Array indizierte. Das scheint mir nicht richtig zu sein.

P粉798343415P粉798343415569 Tage vor613

Antworte allen(1)Ich werde antworten

  • P粉614840363

    P粉6148403632023-07-20 23:09:45

    正如评论中指出的那样,我的测试用例在调用bar()时传递了'Driving',而实际上应该传递'Facility'。现在我只需要回到原来的代码中看看为什么传递了错误的值。非常尴尬,抱歉给您带来困扰。

    Antwort
    0
  • StornierenAntwort