es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilice array_filter() o array_intersect() para filtrar una matriz de 2 dimensiones por una columna utilizando una matriz de 1 dimensión.

Estoy intentando filtrar mi primer array por mi segundo array. Quiero filtrar a todas las personas cuya edad sea 22, 25, 35 o 40. Tengo estos valores en lista blanca almacenados en un $a2

$a1 = [
[‘name’ => ‘mike’, ‘age’ => 18],
[‘name’ => ‘james’, ‘age’ => 22],
[‘name’ => ‘sarah’, ‘age’ => 35],
[‘name’ => ‘ken’, ‘age’ => 29],
];

$a2 = [22, 25, 35, 40];

He intentado con array_intersect(), como:

$results = array_intersect($a2, $a1[‘age’]);
var_dump($results);

Y con array_filter(), pero sin éxito.

Mi resultado deseado es:

[
[‘name’ => ‘james’, ‘age’ => 22],
[‘name’ => ‘sarah’, ‘age’ => 35]
]

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes usar array_filter() para filtrar el array con los valores permitidos en $a2:

    $resultados = array<em>filter($a1, function($persona) use ($a2) {
        return in</em>array($persona['age'], $a2);
    });
    
    var_dump($resultados);
    

    La salida será:


    array(2) {
    [1]=>
    array(2) {
    ["name"]=>
    string(5) "james"
    ["age"]=>
    int(22)
    }
    [2]=>
    array(2) {
    ["name"]=>
    string(5) "sarah"
    ["age"]=>
    int(35)
    }
    }

Comments are closed.