أستخدم هذه التقنية لتجميع مجموعة إصلاحات الأخطاء حسب التاريخ في لوحة تحكم Inspector، واعتقدت أنها يمكن أن تكون فكرة جيدة لمقتطف التعليمات البرمجية للآخرين. لقد كتبت أيضًا تطبيقًا لقوالب Laravel النصلية وتنفيذًا أكثر تفصيلاً يدعم التصفية.
قررت تنفيذ هذا الرمز لأنه يجعل من السهل جدًا تمرير قائمة العناصر بناءً على سجلها.
يستخدم هذا التنفيذ الدالة array_reduce. يسمح بإنشاء مصفوفة جديدة تدريجيًا حيث يصبح كل تاريخ مفتاحًا، مع العنصر المقابل كقيمة له.
$data = [ ['date' => '2023-06-01', 'value' => 10], ['date' => '2023-06-02', 'value' => 20], ['date' => '2023-06-01', 'value' => 30], ['date' => '2023-06-03', 'value' => 40], ['date' => '2023-06-02', 'value' => 50], ]; $groupedData = array_reduce($data, function ($result, $item) { $date = new DateTime($item['date']); $formattedDate = $date->format('Y-m-d'); if (!isset($result[$formattedDate])) { $result[$formattedDate] = []; } $result[$formattedDate][] = $item; return $result; }, []); //بفضل كائن DateTime وطريقة التنسيق، يمكنك تخصيص منطق التجميع حسب الشهر أو السنة، وذلك ببساطة عن طريق تغيير سلسلة التنسيق: 'Y-m' للشهر، أو 'Y' للسنة.
التصفية والتجميع
يمكنك أيضًا تقديم وظيفة التصفية لتصفية العناصر قبل تجميعها حسب حقل التاريخ.
$groupedData = array_reduce(array_filter($data, function ($item) use ($filter) { // Filter condition: keep elements with value greater than 20 return $item['value'] > $filter; }), function ($result, $item) { $date = new DateTime($item['date']); $formattedDate = $date->format('Y-m-d'); if (!isset($result[$formattedDate])) { $result[$formattedDate] = []; } $result[$formattedDate][] = $item; return $result; }, []);داخل وظيفة رد الاتصال الخاصة بـ array_filter()، نحدد شرط التصفية. في هذا المثال، نحتفظ فقط بالعناصر التي يكون فيها حقل "القيمة" أكبر من $filter. يمكنك تعديل هذا الشرط بناءً على حالة الاستخدام المحددة الخاصة بك.
عرض النتائج في واجهة المستخدم باستخدام شفرة Laravel
من الواضح أنه يمكنك الحصول على الإلهام واستخدام نفس الإستراتيجية في التكنولوجيا الخاصة بك (مثل Symfony Twig، أو ما شابه ذلك).
للحفاظ على بيانات معالجة البيانات منفصلة عن العرض، أحتفظ بعملية التصفية والتجميع على مستوى وحدة التحكم، وأنفذ فقط تكرار بنية البيانات على جانب القالب.
هنا وحدة التحكم:
namespace App\Http; use Illuminate\Http\Request; class DashboardController extends Controller { /** * The dashboard. * * @param ImpersonatesUsers $impersonator * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index(Request $request) { $data = $this->getData(); $data = array_reduce(array_filter($data, function ($item) use ($filter) { // Filter condition: keep elements with value greater than 20 return $item['value'] > $filter; }), function ($result, $item) { $date = new DateTime($item['date']); $formattedDate = $date->format('Y-m-d'); if (!isset($result[$formattedDate])) { $result[$formattedDate] = []; } $result[$formattedDate][] = $item; return $result; }, []); return view('dashboard', compact('data')); } }وهذا هو عرض الشفرة:
بفضل الأدوات المساعدة المضمنة التي توفرها فئة Laravel Collection، أصبح الأمر واضحًا حقًا:
$groupedData = collect($data)->groupBy(function ($item) { return Carbon::parse($item->date)->format('Y-m-d'); });
يمكنك متابعتي على Linkedin أو X. أقوم بالنشر حول إنشاء أعمال SaaS الخاصة بي.
Inspector عبارة عن أداة لمراقبة تنفيذ التعليمات البرمجية مصممة خصيصًا لمطوري البرامج. لا تحتاج إلى تثبيت أي شيء على مستوى الخادم، فقط قم بتثبيت حزمة الملحن وستكون جاهزًا للبدء.
Inspector سهل للغاية وصديق PHP. يمكنك تجربة حزمة Laravel أو Symfony الخاصة بنا.
إذا كنت تبحث عن مراقبة HTTP، ورؤى استعلام قاعدة البيانات، والقدرة على إعادة توجيه التنبيهات والإشعارات إلى بيئة المراسلة المفضلة لديك، فجرّب Inspector مجانًا. سجل حسابك.
أو تعرف على المزيد على الموقع: https://inspector.dev
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3