Rumah > pembangunan bahagian belakang > tutorial php > Penyortiran kunci tersuai dalam koleksi Laravel

Penyortiran kunci tersuai dalam koleksi Laravel

百草
Lepaskan: 2025-03-10 11:21:12
asal
956 orang telah melayarinya

Custom Key Sorting in Laravel Collections

Kaedah

Laravel menyediakan kawalan berbutir ke atas bagaimana kekunci set disusun, membolehkan anda melaksanakan logik penyortiran tersuai di luar susunan abjad standard. sortKeysUsing

Ciri ini sangat berharga apabila memproses array fail konfigurasi, medan bentuk dengan urutan paparan tertentu, atau mana -mana data yang berkaitan di mana urutan utama penting untuk diproses atau dipaparkan.

$collection->sortKeysUsing('strnatcasecmp');

// 或

$collection->sortKeysUsing(function ($a, $b) {
    return $a <=> $b;
});
Salin selepas log masuk
Berikut adalah contoh bagaimana untuk melaksanakan penyortiran menu keutamaan:

Kaedah
<?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;
    }
}
Salin selepas log masuk

mengubah cara anda mengatur data pengumpulan dan boleh disusun secara semantik mengikut keperluan khusus aplikasi anda. sortKeysUsing

Atas ialah kandungan terperinci Penyortiran kunci tersuai dalam koleksi Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan