Matriz de filtros en PHP

[ Filtrado de matrices usando array_intersect_keysy en PHP ]array_flip

array_intersect_keyses una función incorporada de PHP que calcula la intersección de matrices usando claves. Acepta dos matrices como 参数.

La primera matriz debe ser una matriz con una clave principal. Y la segunda matriz debe contener las claves con las que compararás.

array_flipEs una función PHP incorporada. Intercambia todas las claves con sus valores asociados en la matriz.

Combinando los dos, puede filtrar la matriz. Primero, crea una matriz que contiene las claves principales.

La segunda matriz contendrá las claves que desea verificar. El siguiente bloque de código muestra cómo filtrar una matriz usando array_intersect_keysy array_flip.

muestra:

<?php
    $array_master = array (
        "author_name" => "John",
        "discipline" => "Computer Science",
        "Date_of_Birth" => "01/01/1970",
        "Programming Languages" => "PHP, Objective-C"
    );

    $allowed_keys = array(
        "author_name",
        "discipline"
    );

    echo "<pre>";
    var_dump(array_intersect_key($array_master, array_flip($allowed_keys)));
    echo "</pre>";
?>

Producción:

array(2) {
  ["author_name"]=>
  string(4) "John"
  ["discipline"]=>
  string(16) "Computer Science"
}

[ Filtrado de matrices usando array_filtery en PHP ]ARRAY_FILTER_USE_KEY

array_filteres otra función incorporada. Utiliza una función de devolución de llamada para filtrar los elementos de la matriz.

array_filterLa función acepta ARRAY_FILTER_USE_KEYbanderas como . Esta bandera le permitirá filtrar una matriz por su clave.

El bloque de código a continuación proporcionará detalles sobre cómo usarlo array_filter().ARRAY_FILTER_USE_KEY

muestra:

<?php
    $array_master = array (
        "author_name" => "John",
        "discipline" => "Computer Science",
        "Date_of_Birth" => "01/01/1970",
        "Programming Languages" => "PHP, Objective-C"
    );

    $allowed_keys = array(
        "author_name",
        "discipline"
    );

    $filtered = array_filter(
        $array_master,
        function ($key) use ($allowed_keys) {
    
    
            return in_array($key, $allowed_keys);
        },
        ARRAY_FILTER_USE_KEY
    );

    echo "<pre>";
    echo var_dump($filtered);
    echo "</pre>";
?>

Producción:

array(2) {
  ["author_name"]=>
  string(4) "John"
  ["discipline"]=>
  string(16) "Computer Science"
}

A partir de PHP 7.4, puedes reescribir tu código anterior usando funciones de flecha:

<?php
    $array_master = array (
        "author_name" => "John",
        "discipline" => "Computer Science",
        "Date_of_Birth" => "01/01/1970",
        "Programming Languages" => "PHP, Objective-C"
    );

    $allowed_keys = array(
        "author_name",
        "discipline"
    );

    // Here we are using an arrow
    // function in array_filter
    $filtered = array_filter(
        $array_master,
        fn ($key) => in_array($key, $allowed_keys),
        ARRAY_FILTER_USE_KEY
    );

    echo "<pre>";
    echo var_dump($filtered);
    echo "</pre>";

Producción:

array(2) {
  ["author_name"]=>
  string(4) "John"
  ["discipline"]=>
  string(16) "Computer Science"
}

[ Filtrado de matrices usando array_filtery en PHP ]ARRAY_FILTER_USE_BOTH

ARRAY_FILTER_USE_BOTHes una array_filter()bandera que se puede utilizar con la función. Con él, puedes pasar valores y claves a tus callbackfunciones.

Una de las ventajas de este enfoque es la capacidad de funcionar con claves 任意测试.

El siguiente bloque de código muestra cómo usar ARRAY_FILTER_USE_BOTHy array_filter().

muestra:

<?php
    $array_master = array (
        "author_name" => "John",
        "discipline" => "Computer Science",
        "Date_of_Birth" => "01/01/1970",
        "Programming Languages" => "PHP, Objective-C"
    );

    $allowed_keys = array(
        "author_name" => true,
        "discipline" => true
    );

    $filtered = array_filter(
        $array_master,
        fn ($val, $key) => isset($allowed_keys[$key]) && ($allowed_keys[$key] === true || $allowed_keys[$key] === $val) ,
        ARRAY_FILTER_USE_BOTH
    );

    echo "<pre>";
    echo var_dump($filtered);
    echo "</pre>";
?>

Producción:

array(2) {
  ["author_name"]=>
  string(4) "John"
  ["discipline"]=>
  string(16) "Computer Science"
}

[Filtrado de matrices según la longitud de la clave en PHP]

Puede filtrar una matriz según la longitud de su clave. Puede hacer esto usando estas funciones integradas de PHP array_filter, array_keys, y .array_intersect_keyarray_flipstrlen

La matriz que desea filtrar debe tener sus claves definidas en cadenas. Además, cada cadena debe tener al menos tres caracteres.

Como primer paso, utilice una combinación de array_filter()las funciones array_flipy strlen. Utilice estas funciones para devolver una matriz que coincida con sus criterios.

array_intersect_keyDespués de eso, use y en la matriz resultante array_flip.

<?php
    $array_master = array (
        "author_name" => "John",
        "discipline" => "Computer Science",
        "Date_of_Birth" => "01/01/1970",
        "Programming Languages" => "PHP, Objective-C"
    );

    $filter = array_filter(
        array_keys($array_master), function ($key) {
    
    
            return strlen($key) <= 10;
        });
    $flip_array = array_intersect_key($array_master, array_flip($filter));

    echo "<pre>";
    echo var_dump($flip_array);
    echo "</pre>";
?>

Producción:

array(1) {
  ["discipline"]=>
  string(16) "Computer Science"
}

Supongo que te gusta

Origin blog.csdn.net/weixin_50251467/article/details/131777142
Recomendado
Clasificación