Heim > Backend-Entwicklung > PHP-Tutorial > Benutzerdefinierte Schlüsselsortierung in Laravel -Sammlungen

Benutzerdefinierte Schlüsselsortierung in Laravel -Sammlungen

百草
Freigeben: 2025-03-10 11:21:12
Original
956 Leute haben es durchsucht

Custom Key Sorting in Laravel Collections

Die

Laravels sortKeysUsing -Methode bietet eine granulare Kontrolle darüber, wie festgelegt werden, wie festgelegt werden, sodass Sie die benutzerdefinierte Sortierlogik über die Standard -alphabetische Reihenfolge implementieren können.

Diese Funktion ist besonders wertvoll, wenn Verarbeitungskonfigurationsdatei -Arrays, Formulare Felder mit einer bestimmten Anzeigereihenfolge oder alle zugehörigen Daten, in denen Schlüsselsequenzen für die Verarbeitung oder Anzeige wichtig sind, angemessen sind.

$collection->sortKeysUsing('strnatcasecmp');

// 或

$collection->sortKeysUsing(function ($a, $b) {
    return $a <=> $b;
});
Nach dem Login kopieren

Folgendes ist ein Beispiel für die Implementierung der Prioritätsmenüsortierungen:

<?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;
    }
}
Nach dem Login kopieren
Die Methode

sortKeysUsing verändert die Anordnung von Sammeldaten und kann semantisch nach den spezifischen Anforderungen Ihrer Anwendung sortiert werden.

Das obige ist der detaillierte Inhalt vonBenutzerdefinierte Schlüsselsortierung in Laravel -Sammlungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage