Rumah > pembangunan bahagian belakang > masalah PHP > PHP mencari kunci dalam tatasusunan dua dimensi dalam satu gelung

PHP mencari kunci dalam tatasusunan dua dimensi dalam satu gelung

WBOY
Lepaskan: 2023-05-07 14:53:08
asal
606 orang telah melayarinya

Sebagai bahasa pengaturcaraan yang berkuasa, PHP mempunyai struktur data yang kaya, antaranya tatasusunan dua dimensi ialah struktur data yang biasa digunakan. Dalam pembangunan harian, kita sering perlu merentasi tatasusunan dua dimensi untuk mencari data utamanya. Walau bagaimanapun, jika gelung bersarang digunakan untuk setiap traversal, kerumitan masa akan menjadi sangat tinggi. Artikel ini akan memperkenalkan kaedah untuk mencari nilai utama tatasusunan dua dimensi dalam satu gelung.

  1. Apakah tatasusunan dua dimensi?

Tatasusunan dua dimensi ialah jenis tatasusunan khas yang mengandungi berbilang tatasusunan dan menyusun elemen dalam baris dan lajur. Tatasusunan dua dimensi boleh dianggap sebagai matriks yang terdiri daripada tatasusunan berbilang satu dimensi, di mana setiap elemen boleh diakses oleh indeks baris dan indeks lajur. Dalam PHP, tatasusunan dua dimensi boleh ditakrifkan dengan cara berikut:

$arr = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
Salin selepas log masuk

Kod di atas mentakrifkan tatasusunan dua dimensi $arr, yang mengandungi tiga tatasusunan satu dimensi, setiap satu dengan tiga elemen .

  1. Kaedah traversal tatasusunan dua dimensi tradisional

Dalam kaedah traversal tatasusunan dua dimensi tradisional, biasanya perlu menggunakan dua gelung bersarang, satu untuk melintasi baris , dan satu lagi digunakan untuk mengulangi lajur. Contohnya:

foreach ($arr as $key1 => $value1) {
    foreach ($value1 as $key2 => $value2) {
        if ($value2 == $target) {
            echo "关键值所在的行为:" . $key1 . "<br>";
            echo "关键值所在的列为:" . $key2 . "<br>";
        }
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan gelung foreach untuk lelaran melalui setiap elemen dalam tatasusunan $arr. Gelung pertama berulang melalui baris dan gelung kedua berulang pada lajur. Apabila elemen sasaran $target ditemui, keluarkan baris dan lajur di mana elemen itu berada.

Walau bagaimanapun, kerumitan masa kaedah ini ialah $O(n^2)$, iaitu apabila saiz tatasusunan bertambah, bilangan gelung meningkat secara eksponen.

  1. Kaedah mencari nilai utama dalam satu gelung

Kini, kami memperkenalkan kaedah yang lebih cekap yang boleh mencari nilai kunci dalam tatasusunan dua dimensi dalam satu gelung sahaja. Kaedah ini berdasarkan beberapa fungsi tatasusunan yang disediakan oleh PHP dan mempunyai kelebihan kerumitan masa $O(n)$.

Pertama, kita perlu menggunakan fungsi peta tatasusunan PHP untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi, dan kemudian gunakan fungsi carian_tatasusunan untuk mencari nilai sasaran dalam tatasusunan satu dimensi. Kodnya adalah seperti berikut:

// 将二维数组转成一维数组
$array = array_reduce($arr, 'array_merge', array());

// 在一维数组中查找目标值
$key = array_search($target, $array);

// 计算目标值所在的行和列
$row = floor($key / count($arr[0]));
$col = $key % count($arr[0]);

echo "关键值所在的行为:" . $row . "<br>";
echo "关键值所在的列为:" . $col . "<br>";
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi array_reduce untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi Fungsi array_search mencari nilai sasaran dalam tatasusunan satu dimensi dan mengira nilai sasaran dalam tatasusunan dua dimensi dalam .

Kerumitan masa kaedah ini ialah $O(n)$ Berbanding dengan kaedah tradisional, prestasinya telah dipertingkatkan dengan ketara.

  1. Ringkasan

Artikel ini memperkenalkan kaedah cekap yang boleh mencari nilai utama tatasusunan dua dimensi dalam satu gelung. Dengan menggunakan beberapa fungsi tatasusunan yang disediakan oleh PHP, kami mengurangkan kerumitan masa daripada $O(n^2)$ kepada $O(n)$, dengan banyak meningkatkan prestasi program. Saya harap artikel ini berguna untuk merentasi dan mencari tatasusunan dua dimensi dalam PHP.

Atas ialah kandungan terperinci PHP mencari kunci dalam tatasusunan dua dimensi dalam satu gelung. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan