Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menanyakan kedudukan elemen dalam tatasusunan dua dimensi dalam php

Bagaimana untuk menanyakan kedudukan elemen dalam tatasusunan dua dimensi dalam php

PHPz
PHPzasal
2023-04-19 11:39:11930semak imbas

Dalam PHP, kadangkala kita perlu mencari kedudukan elemen tertentu dalam tatasusunan dua dimensi. Proses ini boleh menjadi sangat mudah, tetapi ia juga boleh menjadi sangat rumit jika anda tidak mengetahui kaedah yang betul. Artikel ini akan memperkenalkan beberapa kaedah untuk menanyakan kedudukan elemen dalam tatasusunan dua dimensi dalam PHP dan membantu anda menyelesaikan masalah ini.

Pertanyakan kedudukan elemen individu

Jika anda ingin menanyakan kedudukan elemen tertentu dalam tatasusunan dua dimensi, anda boleh menggunakan pernyataan dua peringkat untuk gelung. Gelung pertama melalui setiap sub-tatasusunan, dan kemudian cari elemen sasaran dalam setiap sub-tatasusunan. Jika elemen sasaran ditemui, kedudukannya boleh dikembalikan.

Berikut ialah kod sampel yang menggunakan pernyataan gelung for untuk menanyakan kedudukan elemen dalam tatasusunan dua dimensi:

function find_element($arr, $target) {
    for ($i = 0; $i < count($arr); $i++) {
        for ($j = 0; $j < count($arr[$i]); $j++) {
            if ($arr[$i][$j] == $target) {
                return array($i, $j);
            }
        }
    }
}

Dalam fungsi ini, parameter pertama $arr mewakili tatasusunan dua dimensi yang kami cari Tatasusunan dimensi, parameter kedua $target mewakili elemen sasaran yang ingin kami cari. Gunakan dua pernyataan gelung untuk melintasi tatasusunan, dan jika elemen sasaran ditemui, kedudukannya dikembalikan.

Sebagai contoh, katakan kita mempunyai tatasusunan 2D seperti berikut:

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

Kita boleh menggunakan kod berikut untuk mencari kedudukan nombor 5:

$target = 5;
$position = find_element($arr, $target);
echo "The position of $target is ({$position[0]}, {$position[1]})";

Ini akan Output: Kedudukan 5 ialah (1, 1).

Gunakan fungsi array_search() untuk menanyakan kedudukan

Selain menulis gelung for secara manual, kita juga boleh menggunakan fungsi array_search() PHP untuk menanyakan kedudukan elemen tertentu dalam tatasusunan dua dimensi. Fungsi array_search() hanya boleh mencari elemen dalam tatasusunan satu dimensi, tetapi tidak boleh mencari terus dalam tatasusunan dua dimensi. Oleh itu, kita perlu "meratakan" tatasusunan dua dimensi menjadi tatasusunan satu dimensi dan kemudian mencari kedudukan elemen sasaran. Kemudian kita boleh menggunakan beberapa operasi matematik untuk menukar kedudukan tatasusunan satu dimensi kepada kedudukan tatasusunan dua dimensi.

Berikut ialah kod sampel yang "meratakan" tatasusunan dua dimensi menjadi tatasusunan satu dimensi dan menggunakan fungsi array_search() untuk mencari elemen sasaran:

function find_element($arr, $target) {
    $flatten = array();
    foreach ($arr as $subarr) {
        $flatten = array_merge($flatten, $subarr);
    }
    $key = array_search($target, $flatten);
    if ($key !== false) {
        $col = $key % count($arr[0]);
        $row = floor($key / count($arr[0]));
        return array($row, $col);
    }
}

Dalam fungsi ini, kita mula-mula Tatasusunan dua dimensi "diratakan" menjadi tatasusunan satu dimensi $ratakan. Kami kemudian menggunakan fungsi array_search() untuk mencari lokasi elemen sasaran dalam $flatten. Jika elemen sasaran ditemui, kita boleh menggunakan beberapa operasi matematik untuk menukar kedudukan satu dimensi kepada kedudukan dua dimensi.

Sebagai contoh, katakan kita mempunyai tatasusunan 2D seperti berikut:

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

Kita boleh menggunakan kod berikut untuk mencari kedudukan nombor 5:

$target = 5;
$position = find_element($arr, $target);
echo "The position of $target is ({$position[0]}, {$position[1]})";

Ini akan Output: Kedudukan 5 ialah (1, 1).

Gunakan fungsi array_filter() untuk menanyakan kedudukan

Serupa dengan fungsi array_search(), kita juga boleh menggunakan fungsi array_filter() dan beberapa operasi matematik untuk menanyakan kedudukan sesuatu elemen dalam tatasusunan dua dimensi. Menggunakan fungsi array_filter() mengelakkan masalah tatasusunan gelung dan "meratakan" secara manual.

Berikut ialah kod sampel yang menggunakan fungsi array_filter() dan operasi matematik untuk menanyakan kedudukan elemen tertentu dalam tatasusunan dua dimensi:

function find_element($arr, $target) {
    $result = array_filter($arr, function ($subarr) use ($target) {
        return in_array($target, $subarr);
    });
    if (!empty($result)) {
        $row = key($result);
        $col = array_search($target, $arr[$row]);
        return array($row, $col);
    }
}

Dalam fungsi ini, kami menggunakan fungsi array_filter() untuk menapis Tatasusunan dua dimensi yang hanya mengekalkan subarray yang mengandungi elemen sasaran. Kemudian, kita boleh menggunakan fungsi key() dan fungsi array_search() untuk mencari lokasi elemen sasaran.

Sebagai contoh, katakan kita mempunyai tatasusunan 2D seperti berikut:

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

Kita boleh menggunakan kod berikut untuk mencari kedudukan nombor 5:

$target = 5;
$position = find_element($arr, $target);
echo "The position of $target is ({$position[0]}, {$position[1]})";

Ini akan Output: Kedudukan 5 ialah (1, 1).

Ringkasan

Menyoal kedudukan dalam tatasusunan 2D dalam PHP boleh menjadi rumit, tetapi terdapat beberapa cara berbeza untuk menyelesaikan masalah ini. Sama ada anda menulis gelung for dengan tangan, gunakan fungsi array_search() atau gunakan fungsi array_filter(), sesetengah matematik diperlukan untuk menukar kedudukan satu dimensi kepada kedudukan dua dimensi. Semoga artikel ini membantu anda lebih memahami cara untuk membuat pertanyaan kedudukan dalam tatasusunan 2D dalam PHP.

Atas ialah kandungan terperinci Bagaimana untuk menanyakan kedudukan elemen dalam tatasusunan dua dimensi dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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