Saya mempunyai kelas yang mengandungi tatasusunan statik yang kuncinya adalah rentetan dan nilainya ialah tatasusunan. Jika nilai tatasusunan tertentu wujud, saya ingin mendapatkan kuncinya.
Saya fikir kod menggunakan fungsi array_search() akan mencapai ini, tetapi ia gagal mencari nilai dan sebaliknya mencetak palsu. Saya fikir parameter "ketat" mungkin membuat perbezaan, tetapi ia nampaknya tidak berfungsi. Adakah saya melakukan sesuatu yang salah? Apakah cara terbaik untuk menulis kod carian?
$ 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)
Saya perasan bahawa jika saya menyahkomen baris kod dan diindeks ke dalam tatasusunan menggunakan nilai elemen tatasusunan yang saya cari, maka ia berjaya dan mencetak rentetan (7) "Memandu". Ini nampaknya tidak betul bagi saya.
Seperti yang dinyatakan dalam ulasan, kes ujian saya melepasi 'Memandu' apabila memanggil bar() sedangkan ia sepatutnya melepasi 'Kemudahan'. Sekarang saya hanya perlu kembali kepada kod asal dan melihat mengapa nilai yang salah telah diluluskan. Sangat memalukan dan maaf kerana menimbulkan masalah kepada anda.