¿Cómo buscar por clave => valor en una array multidimensional en PHP?

En PHP, la búsqueda de array multidimensional se refiere a buscar una clave => valor en una array anidada de varios niveles. Esta búsqueda se puede realizar ya sea por el enfoque iterativo o recursivo.

Enfoque recursivo: verifique si la clave existe en una array multidimensional y el valor de una clave es igual al requerido, luego el resultado almacenado en una array y también recurre a través de cada elemento.

Ejemplo: Programa para buscar estudiantes cuyo nombre sea “AMIT” en un arreglo multidimensional e imprimir resultado.

<?php
// PHP program to carry out multidimensional array
// search by key=>value
  
// Function to recursively search for a
// given key=>value 
function search($array, $key, $value) {
    $results = array();
      
    // if it is array
    if (is_array($array)) {
          
        // if array has required key and value
        // matched store result 
        if (isset($array[$key]) && $array[$key] == $value) {
            $results[] = $array;
        }
          
        // Iterate for each element in array
        foreach ($array as $subarray) {
              
            // recur through each element and append result 
            $results = array_merge($results, 
                    search($subarray, $key, $value));
        }
    }
  
    return $results;
}
  
// Multidimensional array for student list
$arr = array(
    "A" => array(
        1 => array('rollNo'=>101, 'name'=>"AMIT"),
        2 => array('rollNo'=>102, 'name'=>"BHUWAN"),
        3 => array('rollNo'=>103, 'name'=>"BOB"),
        4 => array('rollNo'=>104, 'name'=>"CAROT")
    ),
    "B" => array(
        1 => array('rollNo'=>201, 'name'=>"ABHISHEK"),
        2 => array('rollNo'=>202, 'name'=>"AMIT"),
        3 => array('rollNo'=>203, 'name'=>"RONNY"),
        4 => array('rollNo'=>204, 'name'=>"LOBO")
    ),
    "C" => array(
        1 => array('rollNo'=>301, 'name'=>"ANMOL"),
        2 => array('rollNo'=>302, 'name'=>"TONNY"),
        3 => array('rollNo'=>303, 'name'=>"SANJI")
    )
);
  
$res = search($arr, 'name', 'AMIT');
  
foreach ($res as $var) {
    echo $var["rollNo"]." - ".$var['name'] . "<br>";
}
  
?>
Producción:

101 - AMIT
202 - AMIT

Enfoque iterativo: debajo de la implementación se encuentra el enfoque iterativo

Ejemplo: Programa para buscar estudiantes que viven en “Delhi” en una array multidimensional e imprimir resultado.

<?php
// PHP program to carry out multidimensional
// array search by key=>value
   
// Function to iteratively search for a
// given key=>value  
function search($array, $key, $value) {
   
    // RecursiveArrayIterator to traverse an
    // unknown amount of sub arrays within
    // the outer array.
    $arrIt = new RecursiveArrayIterator($array);
   
    // RecursiveIteratorIterator used to iterate
    // through recursive iterators
    $it = new RecursiveIteratorIterator($arrIt);
   
    foreach ($it as $sub) {
   
        // Current active sub iterator
        $subArray = $it->getSubIterator();
   
        if ($subArray[$key] === $value) {
            $result[] = iterator_to_array($subArray);
         }
    }
    return $result;
}
   
// Multidimensional array for students list
$arr = array(
    "A" => array(
        1 => array('name'=>"Alice", 'location'=>"Dehradun"),
        2 => array('name'=>"BHUWAN", 'location'=>"Mumbai"),
        3 => array('name'=>"BOB", 'location'=>"Delhi"),
        4 => array('name'=>"CAROT", 'location'=>"Haryana")
    ),
    "B" => array(
        1 => array('name'=>"ABHISHEK", 'location'=>"Dehradun"),
        2 => array('name'=>"AMIT", 'location'=>"Delhi"),
        3 => array('name'=>"RONNY", 'location'=>"Bengaluru"),
        4 => array('name'=>"LOBO", 'location'=>"Pune")
    ),
    "C" => array(
        1 => array('name'=>"ANMOL", 'location'=>"Delhi"),
        2 => array('name'=>"TONNY", 'location'=>"Delhi"),
        3 => array('name'=>"SANJI", 'location'=>"Haryana")
    )
);
   
$res = search($arr, 'location', 'Delhi');
   
foreach ($res as $var) {
    echo $var["name"]." - ".$var['location'] ."<br>";
}
  
?>
Producción:

BOB - Delhi
AMIT - Delhi
ANMOL - Delhi
TONNY - Delhi

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 *