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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Mahmoud Alrashidi
لدي جدول المدن في قاعدة البيانات و أحتاج إلى إنشاء مصفوفة من النموذج التالي:
حاولت كتابة الكود بنفسي ، لكن اتضح أنه كبير. أنا متأكد من أن هناك حل أكثر إيجازًا.
كيف يمكنني إعادة بنائه؟
وأحتاج أيضًا إلى فرز المدن حسب الاسم داخل المصفوفة.
رابط هذا التعليق
شارك على الشبكات الإجتماعية
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.