Dalam senario ini, anda mempunyai tatasusunan berbilang dimensi yang mewakili koleksi produk. Setiap produk ditakrifkan oleh sifat seperti nama, slug, harga, dll. Matlamat anda adalah untuk mencari cara untuk mencari tatasusunan untuk produk tertentu menggunakan sifat slug dan mengembalikan kunci sepadannya dalam tatasusunan.
Satu cara untuk mencapai ini adalah dengan memanfaatkan fungsi array_search dan fungsi array_column. Berikut ialah fungsi tersuai yang merangkumi pendekatan ini:
function array_search_multidim(array $array, string $column, string $key) { return array_search($key, array_column($array, $column)); }
Untuk menggunakan fungsi ini, anda akan memanggilnya sedemikian:
$product_key = array_search_multidim($products, 'slug', 'breville-one-touch-tea-maker-BTM800XL');
Ini akan mencari tatasusunan $products untuk produk dengan sifat slug sama dengan 'breville-one-touch-tea-maker-BTM800XL' dan kembalikan kuncinya yang sepadan. Dalam contoh ini, ia akan mengembalikan nilai 1.
Satu lagi penyelesaian yang mungkin adalah berdasarkan fungsi array_search. Untuk pendekatan ini, anda perlu menggunakan PHP 5.5.0 atau lebih tinggi:
$key = array_search('breville-one-touch-tea-maker-BTM800XL', array_column($products, 'slug'));
Kod ini mencapai hasil yang sama seperti contoh sebelumnya.
Terdapat juga kaedah ketiga menggunakan array_walk_recursive yang secara rekursif melalui semua elemen tatasusunan dan membandingkan nilai slug dengan nilai yang diberikan:
function array_walk_recursive_search($input, $needle, &$result = null) { if (is_array($input)) { foreach ($input as $key => $value) { array_walk_recursive_search($value, $needle, $result); } } else { if ($input === $needle) { $result = $key; } } }
Ini fungsi boleh digunakan seperti berikut:
array_walk_recursive($products, 'breville-one-touch-tea-maker-BTM800XL', $product_key);
Adalah penting untuk ambil perhatian bahawa walaupun kaedah array_walk_recursive adalah lebih umum dan boleh mengendalikan sebarang jenis struktur tatasusunan, ia biasanya lebih perlahan daripada kaedah lain.
Secara keseluruhan, kaedah terbaik untuk digunakan bergantung pada keperluan khusus dan kekangan permohonan anda. Walau bagaimanapun, dua kaedah yang paling berkesan ialah kaedah yang menggunakan fungsi array_search dan array_column.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Kunci dalam Tatasusunan Berbilang Dimensi PHP dengan Nilainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!