Nuevas funciones de búsqueda de arrays propuestas en PHP 8.4

  • Publicado el 28 mayo, 2024
  • Palabras: 529

Es probable que lleguen a PHP 8.4 cuatro nuevas funciones de arrays que aún se encuentran en la etapa de votación RFC. Nos alienta que la votación ya sea 100% de votos "sí" hasta el momento y la votación finalizará el 29 de mayo de 2024

Nuevas funciones de búsqueda de arrays propuestas en PHP 8.4

En PHP 8.4 se incorporarán cuatro nuevas funciones de matriz que son funciones auxiliares para comprobar la existencia de elementos en una matriz que cumplan una condición específica. Las nuevas funciones son:

 

  • array_find()
  • array_find_key()
  • array_any()
  • array_all()

 

La función array_find()

 

La función array_find($array, $callback) devuelve el primer elemento para el cual $callback devuelve verdadero:

 

$array = [
    'a' => 'dog',
    'b' => 'cat',
    'c' => 'cow',
    'd' => 'duck',
    'e' => 'goose',
    'f' => 'elephant'
];
 
array_find($array, function (string $value) {
    return strlen($value) > 4;
}); // string(5) "goose"
 
array_find($array, function (string $value) {
    return str_starts_with($value, 'f');
}); // null
 
// Find the first animal where the array key is the first symbol of the animal.
array_find($array, function (string $value, $key) {
   return $value[0] === $key;
});

 

La función array_find_key()

 

La función array_find_key($array, $callback) devuelve la clave del primer elemento para el que $callback devuelve verdadero. Al igual que array_find(), devuelve null si no se encuentra ningún elemento coincidente:

 

$array = [
    'a' => 'dog',
    'b' => 'cat',
    'c' => 'cow',
    'd' => 'duck',
    'e' => 'goose',
    'f' => 'elephant'
];
 
array_find_key($array, function (string $value) {
    return strlen($value) > 4;
}); // string(1) "e"
 
array_find_key($array, function (string $value) {
    return str_starts_with($value, 'f');
}); // null
 
array_find_key($array, function (string $value, $key) {
   return $value[0] === $key;
}); // string(1) "c"

 

La implementación RFC para esta función se parece a la siguiente:

 

function array_find_key(array $array, callable $callback): mixed {
    foreach ($array as $key => $value) {
        if ($callback($value, $key)) {
            return $key;
        }
    }
 
    return null;
}

 

Las funciones array_any() y array_all()

 

La segunda parte del RFC (y una votación separada de 2/3) incluye las funciones array_any() y array_all(). Puede utilizar estas funciones si alguno de los elementos de una matriz devuelve verdadero para array_any() y si todos los elementos de una matriz devuelven verdadero para array_all(), respectivamente.

 

$array = [
    'a' => 'dog',
    'b' => 'cat',
    'c' => 'cow',
    'd' => 'duck',
    'e' => 'goose',
    'f' => 'elephant'
];
 
// Check, if any animal name is longer than 5 letters.
array_any($array, function (string $value) {
    return strlen($value) > 5;
}); // bool(true)
 
// Check, if any animal name is shorter than 3 letters.
array_any($array, function (string $value) {
    return strlen($value) < 3;
}); // bool(false)
 
// Check, if all animal names are shorter than 12 letters.
array_all($array, function (string $value) {
    return strlen($value) < 12;
}); // bool(true)
 
// Check, if all animal names are longer than 5 letters.
array_all($array, function (string $value) {
    return strlen($value) > 5;
}); // bool(false)

 

Puedes leer todos los detalles sobre este cambio en el RFC. Esta característica se incluye en PHP 8.4. La implementación de estas funciones se puede encontrar en GitHub.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Laravel news

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión