البرمجة

تحسين أداء كود PHP: حل مشكلة حساب إجمالي الوقت في مصفوفة متغيرة

في البداية، يظهر الكود الذي قدمته يتعامل مع بيانات من قاعدة البيانات باستخدام لغة PHP وMySQL. الهدف من هذا الكود هو تحليل البيانات وإعداد مصفوفة $graphArr التي تحتوي على معلومات حول الآلات وإجمالي الوقت.

الشرط الثالث يتعامل مع حالة عندما تكون $rows['Machine#'] موجودة في $machineArr. الهدف هو تحديث قيمة array_sum($totalTimeArr) وإضافتها إلى $graphArr. ومع ذلك، يشير سائل السؤال إلى أن هذا الشرط لا يقوم بحساب القيمة الصحيحة أو أنه يقوم بإدراج القيمة الأولى دون حساب الإجمالي الفعلي.

لتحسين الكود، يُفضل إجراء بعض التعديلات. يمكنك استخدام متغير إضافي لتخزين إجمالي الوقت بدلاً من استخدام array_sum($totalTimeArr) داخل النص الذي يتم إضافته إلى $graphArr. يمكنك أيضاً استخدام هيكل التحكم if...else بطريقة تسهل فهمها. هنا تحسين للكود:

php
while ($rows = mysqli_fetch_array($conn)) { $machine = $rows['Machine#']; $totalTime = $rows['TotalTime']; if (!in_array($machine, $machineArr)) { // If the machine is not in $machineArr unset($totalTimeArr); $machineArr[] = $machine; $totalTimeArr[] = $totalTime; } else { // If the machine is in $machineArr $totalTimeArr[] = $totalTime; } // Update $graphArr $graphArr[] = '["'.$machine.'",'.array_sum($totalTimeArr).']'; }

بهذا الشكل، يتم تخزين قيمة array_sum($totalTimeArr) في متغير داخل الحلقة، مما يضمن أن القيمة تحسب بشكل صحيح ويمكنك الاطلاع عليها عند الحاجة. يمكن أن يسهم هذا في توضيح الكود وتحسين أدائه.

المزيد من المعلومات

بالطبع، دعونا نقوم بتوسيع المحتوى لتزويدك بمزيد من المعلومات حول الكود المقدم وكيف يمكن تحسينه بشكل أكبر.

الكود الحالي يستخدم هيكل التحكم في الحلقة while لاسترجاع الصفوف من قاعدة البيانات باستخدام mysqli_fetch_array. يتم التحقق مما إذا كانت الآلة ($rows['Machine#']) موجودة في مصفوفة $machineArr أم لا. إذا كانت غير موجودة، يتم إضافتها إلى المصفوفة، ويتم تعيين قيمة $totalTimeArr إلى $totalTimeArr[] = $rows['TotalTime'] ويتم إضافة قيمة array_sum($totalTimeArr) إلى $graphArr. إذا كانت الآلة موجودة، يتم فقط إضافة $rows['TotalTime'] إلى $totalTimeArr.

لزيادة قيمة الكود وتحسين فهمه، يمكن إضافة تعليقات إلى الكود لشرح كل خطوة بشكل أفضل. على سبيل المثال:

php
// حلقة while لاسترجاع الصفوف من قاعدة البيانات while ($rows = mysqli_fetch_array($conn)) { $machine = $rows['Machine#']; $totalTime = $rows['TotalTime']; // التحقق مما إذا كانت الآلة موجودة في $machineArr if (!in_array($machine, $machineArr)) { // إذا كانت الآلة غير موجودة، إضافتها إلى $machineArr unset($totalTimeArr); // إعادة تعيين $totalTimeArr للتأكد من أنها فارغة $machineArr[] = $machine; // إضافة الآلة إلى $machineArr $totalTimeArr[] = $totalTime; // تعيين قيمة TotalTime إلى $totalTimeArr } else { // إذا كانت الآلة موجودة، إضافة TotalTime إلى $totalTimeArr $totalTimeArr[] = $totalTime; } // تحديث $graphArr باستخدام قيمة array_sum($totalTimeArr) $graphArr[] = '["'.$machine.'",'.array_sum($totalTimeArr).']'; }

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

زر الذهاب إلى الأعلى