Dalam PHP, kita selalunya perlu melakukan beberapa operasi pada tatasusunan, seperti mencari subskrip elemen dalam tatasusunan. Jika elemen dalam tatasusunan semuanya unik, kita boleh menggunakan fungsi array_search() untuk mencari indeks elemen tersebut. Tetapi jika terdapat elemen yang sama dalam tatasusunan, fungsi itu akan mengembalikan hasil yang salah kerana ia hanya akan mengembalikan indeks elemen padanan pertama. Dalam kes ini, kita perlu menggunakan kaedah lain untuk mencari subskrip elemen tatasusunan.
Di bawah saya akan berkongsi beberapa kaedah untuk mencari subskrip tatasusunan integer.
Kaedah 1: Gunakan fungsi in_array()
Fungsi in_array() boleh menyemak sama ada nilai wujud dalam tatasusunan, dan mengembalikan benar jika wujud, jika tidak ia mengembalikan palsu. Sudah tentu, kita boleh menggunakan fungsi ini untuk mencari subskrip elemen dalam tatasusunan, seperti yang ditunjukkan di bawah:
$array = array(1, 2, 3, 4, 5); $key = array_search(3, $array); if ($key !== false) { echo "3 的下标是:$key"; } else { echo "数组中不存在 3"; }
Hasil keluaran:
3 的下标是:2
Walau bagaimanapun, kaedah ini hanya terpakai kepada elemen dalam tatasusunan Satu-satunya kes ialah jika terdapat unsur pendua dalam tatasusunan, subskrip elemen tidak boleh diperoleh dengan tepat.
Kaedah 2: Gunakan fungsi array_keys()
array_keys() fungsi boleh mengembalikan semua nama kunci dalam tatasusunan, iaitu mengembalikan senarai subskrip tatasusunan. Kita boleh menggunakan fungsi ini untuk mencari semua subskrip elemen dalam tatasusunan integer, seperti yang ditunjukkan di bawah:
$array = array(1, 2, 3, 3, 4, 5); $keys = array_keys($array, 3); if (!empty($keys)) { foreach ($keys as $key) { echo "3 的下标是:$key<br>"; } } else { echo "数组中不存在 3"; }
Hasil keluaran:
3 的下标是:2 3 的下标是:3
Kaedah ini boleh mendapatkan elemen dalam tatasusunan integer Semua dengan tepat subskrip elemen, termasuk subskrip elemen berulang. Walau bagaimanapun, jika elemen tidak wujud dalam tatasusunan, tatasusunan kosong dikembalikan.
Kaedah 3: Gunakan fungsi array_flip() dan isset()
Fungsi array_flip() boleh menukar kunci dan nilai dalam tatasusunan dan kemudian mengembalikan tatasusunan baharu. Jika terdapat nilai pendua dalam tatasusunan asal, beberapa data akan hilang. Tetapi jika nilai dalam tatasusunan kami semuanya unik, kami boleh menggunakan kaedah ini untuk mencari subskrip elemen dalam tatasusunan integer, seperti berikut:
$array = array(1, 2, 3, 4, 5); $flipped = array_flip($array); if (isset($flipped[3])) { echo "3 的下标是:" . $flipped[3]; } else { echo "数组中不存在 3"; }
Hasil keluaran:
3 的下标是:2
Walaupun kaedah ini agak mudah, ia hanya sesuai untuk situasi di mana semua elemen dalam tatasusunan adalah unik. Jika terdapat elemen yang sama dalam tatasusunan, kita tidak boleh mendapatkan subskrip yang betul.
Kaedah 4: Gunakan fungsi panggil balik dan fungsi array_filter()
fungsi array_filter() boleh menapis elemen tatasusunan mengikut keadaan yang ditetapkan, dan kemudian mengembalikan elemen tatasusunan yang memenuhi syarat. Kita boleh menggunakan fungsi ini digabungkan dengan fungsi panggil balik tersuai untuk mencari subskrip elemen dalam tatasusunan integer, seperti yang ditunjukkan di bawah:
$array = array(1, 2, 3, 3, 4, 5); $index = null; array_filter($array, function($key, $value) use (&$index) { if ($value == 3 && is_null($index)) { $index = $key; } }, ARRAY_FILTER_USE_BOTH); if (!is_null($index)) { echo "3 的下标是:$index"; } else { echo "数组中不存在 3"; }
Hasil keluaran:
3 的下标是:2
Kaedah ini boleh tepat Dapatkan subskrip pertama elemen dalam tatasusunan integer, termasuk subskrip elemen berulang. Walau bagaimanapun, kod itu lebih rumit kerana keperluan untuk fungsi panggil balik tersuai.
Ringkasan
Untuk masalah mencari subskrip tatasusunan integer, kita boleh memilih kaedah yang berbeza untuk menyelesaikannya Kaedah yang sesuai harus dipilih mengikut kandungan tatasusunan dan aplikasi senario. Jika elemen dalam tatasusunan semuanya unik, kita boleh menggunakan fungsi array_search() atau fungsi array_flip() untuk mencari subskrip elemen tersebut. Jika terdapat unsur pendua dalam tatasusunan, kita boleh memilih untuk menggunakan fungsi array_keys() atau fungsi array_filter() digabungkan dengan fungsi panggil balik tersuai untuk mencari subskrip elemen.
Atas ialah kandungan terperinci PHP mencari subskrip tatasusunan integer. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!