Hướng dẫn php search multidimensional array by key - tìm kiếm php mảng đa chiều bằng phím

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,

 255 [green] => 0 [blue] => 0 )
?>

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

 $v) {
       if ($v[$key] === $st) {
           return $k;
       }
   }
   return null;
}

// define multidimensional array
$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
    )
);

// search for key
echo "The Key is " . searchArray('blue', 255, $color);

// output
// The Key is b
?>

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.

Làm thế nào để bạn tìm kiếm một mảng đa chiều?

Tìm kiếm mảng đa chiều bằng phương thức Array_Search (): Array_Search () là một hàm sẵn có tìm kiếm một giá trị đã cho liên quan đến cột/khóa mảng đã cho.Hàm này chỉ trả về chỉ mục chính thay vì đường dẫn tìm kiếm.array_search() method: The array_search() is an inbuilt function which searches for a given value related to the given array column/key. This function only returns the key index instead of a search path.

Làm thế nào để bạn kiểm tra xem một mảng có khóa trong PHP không?

Hàm ARRAY_KEY_EXISTS () PHP ARRAYarray_key_exists() Function The array_key_exists() function checks an array for a specified key, and returns true if the key exists and false if the key does not exist.

Làm thế nào để bạn truy cập một khóa bên trong một mảng?

Các phần tử mảng có thể được truy cập bằng cú pháp [Key] mảng.);array[key] syntax. );

Làm thế nào để bạn khớp với một khóa mảng?

Hàm mảng_intersect_key () so sánh các khóa của hai mảng (hoặc nhiều hơn) và trả về các trận đấu.Hàm này so sánh các khóa của hai hoặc nhiều mảng và trả về một mảng chứa các mục từ Array1 có trong Array2, Array3, v.v.array_intersect_key() function compares the keys of two (or more) arrays, and returns the matches. This function compares the keys of two or more arrays, and return an array that contains the entries from array1 that are present in array2, array3, etc.