Maison  >  Questions et réponses  >  le corps du texte

Puis-je utiliser la fonction array_search() de PHP pour rechercher des situations où les valeurs elles-mêmes sont des tableaux ?

J'ai une classe qui contient un tableau statique dont les clés sont des chaînes et les valeurs sont des tableaux. Si une valeur de tableau spécifique existe, je souhaite obtenir sa clé.

Je pensais que le code utilisant la fonction array_search() accomplirait cela, mais il ne parvient pas à trouver la valeur et affiche à la place false. Je pensais que le paramètre "strict" pourrait faire une différence, mais cela ne semble pas fonctionner. Est-ce que j'ai fait quelque chose de mal? Quelle est la meilleure façon d’écrire du code de recherche ?

$ 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)

J'ai remarqué que si je décommentais la ligne de code et l'indexais dans le tableau en utilisant la valeur de l'élément du tableau que je recherchais, alors cela réussissait et imprimait la chaîne (7) "Conduite". Cela ne me semble pas correct.

P粉798343415P粉798343415479 Il y a quelques jours570

répondre à tous(1)je répondrai

  • P粉614840363

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

    Comme indiqué dans les commentaires, mon scénario de test réussit « Conduite » lors de l'appel de bar() alors qu'il devrait en fait réussir « Facilité ». Il ne me reste plus qu'à revenir au code d'origine et voir pourquoi la mauvaise valeur a été transmise. Très embarrassant et désolé de vous avoir causé des ennuis.

    répondre
    0
  • Annulerrépondre