Eliminar valores anidados en Laravel con la función data_forget
- Publicado el 10 enero, 2025
- Palabras: 58
¿Necesita eliminar valores de arrays muy anidados? La función data_forget de Laravel ofrece una forma conveniente de gestionar la eliminación de datos anidados mediante una simple notación de puntos.

#Uso básico
La función data_forget elimina un valor dentro de un array o un objeto anidado utilizando la notación "punto":
$data = ['products' => ['desk' => ['price' => 100]]];
data_forget($data, 'products.desk.price');
// Result: ['products' => ['desk' => []]]
#Uso de comodines
Manejar múltiples elementos con notación de asterisco:
$data = [
'products' => [
['name' => 'Desk 1', 'price' => 100],
['name' => 'Desk 2', 'price' => 150],
],
];
data_forget($data, 'products.*.price');
// Result: ['products' => [['name' => 'Desk 1'], ['name' => 'Desk 2']]]
#Ejemplo práctico
A continuación se explica cómo podría usarlo en un servicio de limpieza de datos:
class DataSanitizer
{
public function cleanUserData(array $userData)
{
// Remove sensitive information
data_forget($userData, 'payment.*.card_number');
data_forget($userData, 'payment.*.cvv');
// Remove temporary processing data
data_forget($userData, 'orders.*.processing_metadata');
// Clear cached calculations
data_forget($userData, 'statistics.*.calculated_values');
return $userData;
}
public function prepareApiResponse(array $data)
{
// Remove internal fields
data_forget($data, 'items.*.internal_id');
data_forget($data, 'items.*.stock_location');
// Remove null values
foreach ($data['items'] ?? [] as $key => $item) {
if (isset($item['variants'])) {
data_forget($data, "items.{$key}.variants.*.null_fields");
}
}
return $data;
}
}
La función data_forget simplifica el proceso de eliminación de datos específicos de estructuras anidadas complejas.
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión