¿Cómo buscar por clave múltiple => valor en la array de PHP?

En una array multidimensional, si no existe un par único de clave => valor (más de un par de clave => valor), en ese caso, si buscamos el elemento por un solo par de clave => valor, entonces puede devolver más que un artículo. Por lo tanto, podemos implementar la búsqueda con más de un par clave => valor para obtener elementos únicos.

Enfoque: para cada array dentro de la array, itere sobre la array de búsqueda y si algún valor de clave de búsqueda no coincide con el valor de clave de array correspondiente, descartamos esa array y continuamos el proceso para la siguiente array. Entendamos esto mejor con un ejemplo:
supongamos que queremos buscar los detalles de los estudiantes de una lista de estudiantes que contiene estudiantes de diferentes secciones, por lo tanto, en este caso, rollNo solo podría no dar el resultado correcto. Entonces necesitaremos buscar en la lista con dos claves => valor que es rollNO y sección.

Ejemplo:

<?php
  
// PHP program to search for multiple
// key=>value pairs in array
  
function search($array, $search_list) {
  
    // Create the result array
    $result = array();
  
    // Iterate over each array element
    foreach ($array as $key => $value) {
  
        // Iterate over each search condition
        foreach ($search_list as $k => $v) {
      
            // If the array element does not meet
            // the search condition then continue
            // to the next element
            if (!isset($value[$k]) || $value[$k] != $v)
            {
                  
                // Skip two loops
                continue 2;
            }
        }
      
        // Append array element's key to the
        //result array
        $result[] = $value;
    }
  
    // Return result 
    return $result;
}
  
// Multidimensional array for students list
$arr = array(
    1 => array(
        'rollNo' => 44,
        'name' => 'Alice',
        'section' => 'B'
    ),
    2 => array(
        'rollNo' => 3,
        'name' => 'Amit',
        'section' => 'B'
    ),
    3 => array(
        'rollNo' => 3,
        'name' => 'Bob',
        'section' => 'A'
    ),
    4 => array(
        'rollNo' => 5,
        'name' => 'Gaurav',
        'section' => 'B'
    ),
    5 => array(
        'rollNo' => 5,
        'name' => 'Gaurav',
        'section' => 'A'
    ) 
);
  
// Define search list with multiple key=>value pair
$search_items = array('rollNo'=>5, 'section'=>"A");
  
// Call search and pass the array and
// the search list
$res = search($arr, $search_items);
  
// Print search result
foreach ($res as $var) {
    echo 'RollNo: ' . $var['rollNo'] . '<br>';
    echo 'Name: ' . $var['name'] . '<br>';
    echo 'Section: ' . $var['section'] . '<br>';        
}
  
?>
Producción:

RollNo: 5
Name: Gaurav
Section: A

Publicación traducida automáticamente

Artículo escrito por Blinkii y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *