"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تجميع المصفوفة حسب التاريخ في PHP – نصائح سريعة

كيفية تجميع المصفوفة حسب التاريخ في PHP – نصائح سريعة

تم النشر بتاريخ 2024-11-03
تصفح:636

أستخدم هذه التقنية لتجميع مجموعة إصلاحات الأخطاء حسب التاريخ في لوحة تحكم Inspector، واعتقدت أنها يمكن أن تكون فكرة جيدة لمقتطف التعليمات البرمجية للآخرين. لقد كتبت أيضًا تطبيقًا لقوالب Laravel النصلية وتنفيذًا أكثر تفصيلاً يدعم التصفية.

قررت تنفيذ هذا الرمز لأنه يجعل من السهل جدًا تمرير قائمة العناصر بناءً على سجلها.

قم بتجميع المصفوفة حسب التاريخ بلغة PHP خالصة

يستخدم هذا التنفيذ الدالة 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'));
    }
}

وهذا هو عرض الشفرة:

    @foreach ($groupedData as $date => $items)
  • {{ $date }}
      @foreach ($items as $item)
    • Value: {{ $item['value'] }}
    • @endforeach
  • @endforeach

قم بتجميع مجموعة Laravel حسب التاريخ

بفضل الأدوات المساعدة المضمنة التي توفرها فئة Laravel Collection، أصبح الأمر واضحًا حقًا:

$groupedData = collect($data)->groupBy(function ($item) {
    return Carbon::parse($item->date)->format('Y-m-d');
});

يمكنك متابعتي على Linkedin أو X. أقوم بالنشر حول إنشاء أعمال SaaS الخاصة بي.

مراقبة تطبيق PHP الخاص بك مجانا

Inspector عبارة عن أداة لمراقبة تنفيذ التعليمات البرمجية مصممة خصيصًا لمطوري البرامج. لا تحتاج إلى تثبيت أي شيء على مستوى الخادم، فقط قم بتثبيت حزمة الملحن وستكون جاهزًا للبدء.

Inspector سهل للغاية وصديق PHP. يمكنك تجربة حزمة Laravel أو Symfony الخاصة بنا.

إذا كنت تبحث عن مراقبة HTTP، ورؤى استعلام قاعدة البيانات، والقدرة على إعادة توجيه التنبيهات والإشعارات إلى بيئة المراسلة المفضلة لديك، فجرّب Inspector مجانًا. سجل حسابك.

أو تعرف على المزيد على الموقع: https://inspector.dev

How to group array by date in PHP – Fast Tips

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/inspector/how-to-group-array-by-date-in-php-fast-tips-4oc0?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang@163 .com لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3