Maison > développement back-end > tutoriel php > Tri de clé personnalisé dans les collections Laravel

Tri de clé personnalisé dans les collections Laravel

百草
Libérer: 2025-03-10 11:21:12
original
955 Les gens l'ont consulté

Custom Key Sorting in Laravel Collections

La méthode sortKeysUsing de Laravel fournit un contrôle granulaire sur la façon dont les touches définies sont triées, vous permettant d'implémenter la logique de tri personnalisée au-delà de l'ordre alphabétique standard.

Cette fonction est particulièrement précieuse lors du traitement des tableaux de fichiers de configuration, des champs de formulaire avec un ordre d'affichage spécifique ou des données associées où les séquences de clés sont importantes pour le traitement ou l'affichage.

$collection->sortKeysUsing('strnatcasecmp');

// 或

$collection->sortKeysUsing(function ($a, $b) {
    return $a <=> $b;
});
Copier après la connexion

Ce qui suit est un exemple de la façon d'implémenter le tri de menu prioritaire:

<?php namespace App\Services;

use Illuminate\Support\Collection;

class NavigationManager
{
    public function getOrderedNavigation(array $menuItems): Collection
    {
        return collect($menuItems)
            ->sortKeysUsing(function ($a, $b) {
                // 提取位置前缀 (pos1_、pos2_ 等)
                $positionA = $this->extractPosition($a);
                $positionB = $this->extractPosition($b);

                // 如果两者都有位置前缀,则按数字排序
                if ($positionA !== null && $positionB !== null) {
                    return $positionA <=> $positionB;
                }

                // 位置前缀在无前缀键之前
                if ($positionA !== null) return -1;
                if ($positionB !== null) return 1;

                // 按部分分组项目
                $sectionA = explode('_', $a)[0];
                $sectionB = explode('_', $b)[0];

                if ($sectionA !== $sectionB) {
                    // 自定义部分顺序
                    $sections = ['dashboard', 'users', 'content', 'settings'];
                    $indexA = array_search($sectionA, $sections);
                    $indexB = array_search($sectionB, $sections);

                    if ($indexA !== false && $indexB !== false) {
                        return $indexA <=> $indexB;
                    }
                }

                // 默认情况下使用自然不区分大小写的排序
                return strnatcasecmp($a, $b);
            });
    }

    private function extractPosition(string $key): ?int
    {
        if (preg_match('/^pos(\d+)_/', $key, $matches)) {
            return (int) $matches[1];
        }

        return null;
    }
}
Copier après la connexion
La méthode

sortKeysUsing modifie la façon dont vous organisez les données de collecte et peut être triée sémantiquement en fonction des besoins spécifiques de votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal