Mahmoud Alrashidi نشر 4 أبريل 2021 أرسل تقرير نشر 4 أبريل 2021 لدي جدول المدن في قاعدة البيانات و أحتاج إلى إنشاء مصفوفة من النموذج التالي: [ ['A'] => [ 18 => 'Alexandria', 24 => 'Antioch', 1679 => 'Akron', 1875 => 'Atlanta', 2713 => 'Abilene', ], ['B'] => [ 28 => 'Bakersfield', 154 => 'Billings', 1495 => 'Bridgeport', 2150 => 'Baltimore', 4117 => 'Bend', ] ] حاولت كتابة الكود بنفسي ، لكن اتضح أنه كبير. أنا متأكد من أن هناك حل أكثر إيجازًا. $cities = City::pluck('title', 'id'); $letters = $cities->sort()->map(function($value) { return Str::limit($value, 1, ''); })->unique()->flatten(); $lettersArray = []; foreach ($letters as $letter) { foreach($cities as $key => $city) { if ($letter == Str::limit($city, 1, '')) { $lettersArray[$letter][$key] = $city; } } } كيف يمكنني إعادة بنائه؟ وأحتاج أيضًا إلى فرز المدن حسب الاسم داخل المصفوفة. 1 اقتباس
1 سمير عبود نشر 4 أبريل 2021 أرسل تقرير نشر 4 أبريل 2021 يُمكنك إعادة صياغة الكود بأحد الطرق التالية: <?php $cities = $cities ->sort() ->unique() ->groupBy(function (string $city): string { return strtolower(Str::limit(trim($city),1,'')); }, true); أو: <?php $result = City::pluck('title', 'id') ->sort() ->unique() ->groupBy(function (string $title): string { return strtolower($title[0]); }); // using php short closures $result = City::pluck('title', 'id') ->sort() ->unique() ->groupBy(fn (string $title): string => strtolower($title[0])); 2 اقتباس
السؤال
Mahmoud Alrashidi
لدي جدول المدن في قاعدة البيانات و أحتاج إلى إنشاء مصفوفة من النموذج التالي:
حاولت كتابة الكود بنفسي ، لكن اتضح أنه كبير. أنا متأكد من أن هناك حل أكثر إيجازًا.
كيف يمكنني إعادة بنائه؟
وأحتاج أيضًا إلى فرز المدن حسب الاسم داخل المصفوفة.
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.