Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Mencari Nilai dengan Cekap dalam Kunci 'slug' Tatasusunan PHP Berbilang Dimensi?

Bagaimanakah Saya Boleh Mencari Nilai dengan Cekap dalam Kunci 'slug' Tatasusunan PHP Berbilang Dimensi?

Linda Hamilton
Lepaskan: 2024-12-05 08:58:11
asal
959 orang telah melayarinya

How Can I Efficiently Search for a Value within the

Mencari Tatasusunan PHP Berbilang Dimensi mengikut Nilai

Dalam senario ini, anda ditugaskan untuk membangunkan fungsi yang mencari tatasusunan berbilang dimensi untuk sesuatu tertentu nilai dalam kekunci "slug". Berikut ialah pecahan proses carian dan penyelesaian yang boleh anda pertimbangkan:

Menggunakan array_search() dan array_column()

Memperkenalkan array_search() dan array_column(). array_search() cekap mencari indeks nilai dalam tatasusunan, manakala array_column() mengekstrak nilai tertentu daripada tatasusunan berbilang dimensi, mencipta tatasusunan baharu dengan nilai yang diekstrak tersebut. Menggunakan fungsi ini, anda boleh mencari tatasusunan seperti berikut:

function search_array($array, $key, $value) {
  return array_search($value, array_column($array, $key));
}
Salin selepas log masuk

Menggunakan Fungsi Rekursif Tersuai

Sebagai alternatif, anda boleh menggunakan fungsi tersuai yang berulang melalui tatasusunan secara rekursif, membandingkan nilai "slug" dengan sasaran value:

function search_array_recursive($array, $key, $value) {
  foreach ($array as $subarray) {
    if (is_array($subarray)) {
      $found = search_array_recursive($subarray, $key, $value);
      if ($found !== false) {
        return $found;
      }
    } else if ($subarray[$key] == $value) {
      return $subarray;
    }
  }
  return false;
}
Salin selepas log masuk

Menggunakan array_walk_recursive()

Selain itu, anda boleh menggunakan array_walk_recursive() untuk melintasi tatasusunan dan menggunakan logik carian anda pada setiap elemen:

function search_array_walk_recursive($array, $key, $value, &$found) {
  array_walk_recursive($array, function($subarray) use ($key, $value, &$found) {
    if (is_array($subarray)) {
      search_array_walk_recursive($subarray, $key, $value, $found);
    } else if ($subarray[$key] == $value) {
      $found = true;
    }
  });
}
Salin selepas log masuk

Prestasi Pertimbangan

Kaedah array_search() secara amnya mengatasi teknik lain, terutamanya untuk saiz tatasusunan yang besar. Walau bagaimanapun, adalah penting untuk mempertimbangkan struktur tatasusunan anda, kerana ia memerlukan subarray terindeks untuk hasil yang tepat.

Ringkasan

Kaedah array_search() , digabungkan dengan array_column (), menyediakan penyelesaian yang cekap dan boleh dibaca untuk mencari tatasusunan berbilang dimensi dengan nilai tertentu. Walau bagaimanapun, jika anda perlu menyokong subarray tidak diindeks, kaedah rekursif menawarkan alternatif yang berdaya maju.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Nilai dengan Cekap dalam Kunci 'slug' Tatasusunan PHP Berbilang Dimensi?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan