تحسين أداء كود PHP: حل مشكلة حساب إجمالي الوقت في مصفوفة متغيرة
في البداية، يظهر الكود الذي قدمته يتعامل مع بيانات من قاعدة البيانات باستخدام لغة PHP وMySQL. الهدف من هذا الكود هو تحليل البيانات وإعداد مصفوفة $graphArr
التي تحتوي على معلومات حول الآلات وإجمالي الوقت.
الشرط الثالث يتعامل مع حالة عندما تكون $rows['Machine#']
موجودة في $machineArr
. الهدف هو تحديث قيمة array_sum($totalTimeArr)
وإضافتها إلى $graphArr
. ومع ذلك، يشير سائل السؤال إلى أن هذا الشرط لا يقوم بحساب القيمة الصحيحة أو أنه يقوم بإدراج القيمة الأولى دون حساب الإجمالي الفعلي.
لتحسين الكود، يُفضل إجراء بعض التعديلات. يمكنك استخدام متغير إضافي لتخزين إجمالي الوقت بدلاً من استخدام array_sum($totalTimeArr)
داخل النص الذي يتم إضافته إلى $graphArr
. يمكنك أيضاً استخدام هيكل التحكم if...else
بطريقة تسهل فهمها. هنا تحسين للكود:
phpwhile ($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).']';
}
هذا يجعل الكود أكثر وضوحًا للقارئ، خاصةً إذا كانوا غير ملمين بتفاصيل البرنامج. بالإضافة إلى ذلك، يمكنك أيضاً استخدام أسماء متغيرات أكثر وضوحًا وشرح العمليات المنطقية لضمان فهم أفضل للقارئ.