Rumah > Artikel > pembangunan bahagian belakang > Pertanyaan PHP mengembalikan tatasusunan dua dimensi
Dalam PHP, kita boleh menggunakan pelbagai kaedah untuk menanyakan elemen dalam tatasusunan, seperti menggunakan fungsi in_array(), menggunakan fungsi array_search(), dsb. Tetapi apabila kita perlu menanyakan elemen dalam tatasusunan dua dimensi, kaedah ini kurang berkesan. Artikel ini akan memperkenalkan cara untuk menanyakan tatasusunan dua dimensi dalam PHP dan mengembalikan elemen yang diperlukan.
Pertama, mari kita lihat tatasusunan dua dimensi yang mudah:
$students = array( array('name' => 'Tom', 'age' => 20, 'score' => 90), array('name' => 'Jack', 'age' => 22, 'score' => 85), array('name' => 'Mary', 'age' => 21, 'score' => 92), );
Andaikan kita ingin menanyakan gred pelajar, kita boleh menggunakan foreach untuk menggelungkan tatasusunan dan menggunakan pernyataan bersyarat untuk Menentukan sama ada pelajar yang kita perlukan, contohnya:
$wantedStudent = 'Jack'; foreach ($students as $student) { if ($student['name'] == $wantedStudent) { echo $wantedStudent . '的成绩是:' . $student['score']; break; } }
Kod di atas akan mengeluarkan:
Jack的成绩是:85
Walau bagaimanapun, jika terdapat ramai pelajar yang perlu kita tanya, kaedah ini akan menjadi sangat menyusahkan. Oleh itu, kita boleh merangkumnya ke dalam fungsi dan menggunakannya:
function searchArray($array, $key, $value) { foreach ($array as $item) { if ($item[$key] == $value) { return $item; } } return null; }
Fungsi di atas menerima tiga parameter: tatasusunan, nama kunci dan nilai kunci untuk ditanya. Ia akan berulang melalui tatasusunan dan jika ia menemui padanan, ia mengembalikan item itu, jika tidak ia mengembalikan null.
Kita boleh menggunakan fungsi seperti ini:
$wantedStudent = 'Mary'; $student = searchArray($students, 'name', $wantedStudent); if ($student) { echo $wantedStudent . '的成绩是:' . $student['score']; }
Kod di atas adalah bersamaan dengan contoh sebelumnya dan akan mengeluarkan:
Mary的成绩是:92
Walau bagaimanapun, apabila tatasusunan adalah sangat besar, Mengulangi keseluruhan tatasusunan akan memberi kesan kepada prestasi. Oleh itu, kita boleh menggunakan fungsi tatasusunan array_filter(), yang mengambil tatasusunan dan fungsi panggil balik dan mengembalikan tatasusunan baharu yang mengandungi elemen tatasusunan yang memenuhi syarat fungsi panggil balik.
Berikut ialah contoh penggunaan array_filter() untuk menanyakan tatasusunan dua dimensi:
function searchArray($array, $key, $value) { $filtered = array_filter($array, function($item) use ($key, $value) { return $item[$key] == $value; }); return count($filtered) ? array_values($filtered)[0] : null; }
Fungsi di atas mempunyai fungsi yang sama seperti fungsi sebelumnya, tetapi ia menggunakan array_filter() untuk menapis elemen tatasusunan keadaan, dengan itu meningkatkan prestasi.
Setakat ini, kami telah mempelajari cara membuat pertanyaan tatasusunan dua dimensi dalam PHP dan mengembalikan elemen yang diperlukan. Adalah disyorkan untuk menggunakan array_filter() dan fungsi tanpa nama untuk melaksanakan pertanyaan elemen tatasusunan apabila terdapat ratusan atau lebih keping data.
Atas ialah kandungan terperinci Pertanyaan PHP mengembalikan tatasusunan dua dimensi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!