2 Chức năng: array_search_key_value
trả về mảng các phím để đạt được khóa có giá trị trong một mảng đa chiều, array_extract_keys
trả về giá trị trong một mảng đa chiều được chỉ ra bởi một mảng các phím.
function array_search_key_value[$array, $key, $value] {
if [!is_array[$array]] {
return false;
}
return array_search_key_value_aux[$array, $key, $value];
}
function array_search_key_value_aux[$array, $key, $value, $path=null] {
if [array_key_exists[$key, $array] && $array[$key] === $value] {
$path[]=$key;
return $path;
}
foreach [$array as $k => $v ] {
if [is_array[$v]] {
$path[]=$k;
$p = array_search_key_value_aux[$v, $key, $value, $path];
if [$p !== false] {
return $p;
}
}
}
return false;
}
function array_extract_keys[$array, $key_list] {
$v = $array;
foreach [$key_list as $key] {
if [!is_array[$v] || !array_key_exists[$key, $v]]
return false;
$v = &$v[$key];
}
return $v;
}
Đây là một bài kiểm tra đơn nhất:
$test_array = array[
'a' => array[
'aa' => true,
'ab' => array[
'aaa' => array[
'one' => 1,
'two' => 2,
'three' => 3,
'four' => 4
],
'four' => 4,
'five' => 5,
],
'six' => 6,
],
'seven' => 7
];
$test_data = array[
array['one', 1],
array['two', 2],
array['three', 3],
array['four', 4],
array['five', 5],
array['six', 6],
array['seven', 7],
array['zero', 0],
array['one', 0],
];
foreach [$test_data as $d] {
$r = array_search_key_value[$test_array, $d[0], $d[1]];
echo $d[0] . ' => ' . $d[1] . ' ? ', $r ? implode['/', $r] . ' => ' . array_extract_keys[$test_array, $r] : 'null', PHP_EOL;
}
Các mảng thường được sử dụng để lưu trữ và thao tác dữ liệu một cách dễ dàng và được biết là một trong những khối xây dựng cốt lõi của lập trình PHP. Khi được sử dụng đúng cách, các mảng là một công cụ tuyệt vời để xử lý một lượng lớn dữ liệu một cách hiệu quả - có thể là từ máy chủ cơ sở dữ liệu hoặc từ nguồn của bên thứ ba. Nhưng chúng có thể trở nên khó chịu khi bạn bắt đầu làm việc với mảng đa chiều, bản thân nó là một mảng mảng, tức là, mọi yếu tố của mảng đều xuất hiện dưới dạng một mảng. Ví dụ dưới đây là một đại diện tốt của một mảng đa chiều.
Mảng đa chiều PHP
$color = Array [ ['r'] => Array [ ['red'] => 255, ['green'] => 0, ['blue'] => 0 ], ['g'] => Array [ ['red'] => 0, ['green'] => 255, ['blue'] => 0 ], ['b'] => Array [ ['red'] => 0, ['green'] => 0, ['blue'] => 255 ] ];
Tìm kiếm thông qua loại mảng đa chiều này cho một số khóa hoặc giá trị sẽ là một thách thức mà bạn nên đối mặt với tư cách là người mới bắt đầu PHP. Ở đây chúng tôi sẽ xem cách tìm kiếm mảng đa chiều cho khóa và giá trị hiệu quả trong PHP.
Mảng tìm kiếm PHP cho khóa
Nếu bạn muốn truy xuất giá trị của một khóa cụ thể, thì nó khá đơn giản và có thể được truy cập như thế này,
Nhưng tìm kiếm thông qua các giá trị mảng lồng nhau cần thêm một số nỗ lực và ở đây tôi đã đưa ra hai cách khác nhau để xử lý nó.
Phương pháp 1: Tìm kiếm mảng đa chiều cho giá trị khóa
Phương pháp này áp dụng cho các phiên bản PHP
Phương pháp 2: Áp dụng cho PHP v5.5 trở lên
Đối với các phiên bản PHP 5.5+, quá trình tìm kiếm mảng đa chiều là mã một lớp.
- Hàm
array_search[]
tìm kiếm mảng đã cho cho một giá trị cụ thể và trả về khóa của nó. - Hàm
array_column[]
trả về các giá trị của cột được chỉ định từ mảng.
Điều đó giải thích về việc tìm kiếm mảng đa chiều cho khóa và giá trị trong ngôn ngữ PHP.