Kann ich die Funktion array_search() von PHP verwenden, um nach Situationen zu suchen, in denen die Werte selbst Arrays sind?
P粉798343415
P粉798343415 2023-07-19 23:47:04
0
1
596

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粉798343415
P粉798343415

Antworte allen(1)
P粉614840363

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage