Ordenar claves en una colección en Laravel usando sortKeysUsing

  • Publicado el 30 diciembre, 2024
  • Palabras: 69

Esta poderosa característica te permite personalizar la clasificación de claves con cualquier función de comparación, perfecta para la clasificación natural y la lógica de ordenamiento personalizada.

Ordenar claves en una colección en Laravel usando sortKeysUsing

#Uso básico

El método sortKeysUsing ordena la colección por las claves del array asociativo subyacente mediante una callback. Veamos su uso:

 

$collection = collect([
    'ID' => 22345,
    'first' => 'John',
    'last' => 'Doe',
]);

$sorted = $collection->sortKeysUsing('strnatcasecmp');

 

#Ejemplo práctico

A continuación se muestra una implementación práctica para ordenar las opciones de configuración:

 

class ConfigurationManager
{
    public function getOrderedSettings(array $settings)
    {
        return collect($settings)
            ->sortKeysUsing(function ($a, $b) {
                // Sort priority prefixes first
                $isPriorityA = str_starts_with($a, 'priority_');
                $isPriorityB = str_starts_with($b, 'priority_');
                
                if ($isPriorityA && !$isPriorityB) return -1;
                if (!$isPriorityA && $isPriorityB) return 1;
                
                // Then sort by category
                $categoryA = explode('_', $a)[0];
                $categoryB = explode('_', $b)[0];
                
                if ($categoryA !== $categoryB) {
                    return $categoryA <=> $categoryB;
                }
                
                // Finally, natural case-insensitive sort
                return strnatcasecmp($a, $b);
            });
    }
}

// Usage
$settings = [
    'email_host' => 'smtp.example.com',
    'priority_notifications' => true,
    'app_name' => 'My App',
    'priority_maintenance' => false,
    'email_port' => 587,
];

$manager = new ConfigurationManager();
$ordered = $manager->getOrderedSettings($settings);

 

El método sortKeysUsing es perfecto para situaciones en las que necesita un control preciso sobre cómo se ordenan las claves de colección, especialmente cuando se trata de configuraciones, campos de formulario o cualquier dato asociativo.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

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