73 lines
2.7 KiB
Markdown
73 lines
2.7 KiB
Markdown
---
|
|
title: For Loop
|
|
localeTitle: لحلقة
|
|
---
|
|
## لحلقة
|
|
|
|
في PHP `for` بيان يتكون من ثلاث عبارات وبيان:
|
|
|
|
`for ((initialization); (condition); (final-expression)) statement`
|
|
|
|
### وصف
|
|
|
|
* التهيئة
|
|
* تشغيل قبل تنفيذ الأول في الحلقة.
|
|
* يستخدم هذا التعبير عادة لإنشاء عدادات.
|
|
* يتم تحديد نطاق المتغيرات التي تم إنشاؤها هنا للحلقة. بمجرد الانتهاء من الحلقة يتم تنفيذ ذلك يتم تدميرها.
|
|
* شرط
|
|
* التعبير الذي تم فحصه قبل تنفيذ كل تكرار.
|
|
* إذا تم حذف هذا التعبير يتم تقييمه إلى " `true` .
|
|
* التعبير عن النهائي
|
|
* التعبير الذي يتم تشغيله بعد كل عملية تكرار.
|
|
* عادة ما تستخدم لزيادة عداد.
|
|
* ولكن يمكن استخدامها لتشغيل أي تعبير.
|
|
* بيان
|
|
* رمز لتكرار في كل تكرار حلقة.
|
|
|
|
يمكن استخدام أي من هذه التعبيرات الثلاثة أو العبارة.
|
|
|
|
يمكن أن تحتوي التعبيرات على تعبيرات متعددة مفصولة بفواصل.
|
|
|
|
في التعبير (الشرط) ، سيتم تقييم كل تعبيرات الفاصلة المنفصلة.
|
|
|
|
يتم الحصول على النتيجة من آخر واحد.
|
|
|
|
للحلقات المستخدمة عادة لحساب عدد معين من التكرار لتكرار العبارة.
|
|
|
|
### المخاطر المشتركة
|
|
|
|
#### تجاوز حدود صفيف
|
|
|
|
عند الفهرسة عبر مصفوفة عدة مرات ، من السهل تجاوز حدود الصفيف (على سبيل المثال ، حاول أن ترجع العنصر الرابع في صفيف مكون من 3 عناصر).
|
|
|
|
`// This will cause an error.
|
|
// The bounds of the array will be exceeded.
|
|
$arr = array(1,2,3);
|
|
|
|
for ($i = 0; $i <= count($arr); $i++) {
|
|
var_dump($arr[$i]);
|
|
}
|
|
`
|
|
|
|
هذا سوف يخرج:
|
|
|
|
`int(1) int(2) int(3) NULL
|
|
`
|
|
|
|
هناك طرق لإصلاح هذا الرمز.
|
|
|
|
قم بتعيين الشرط إما `$i < count($arr)` أو `$i <= count($arr) - 1` .
|
|
|
|
#### قضايا الأداء
|
|
|
|
يمكن أن يصبح الرمز أعلاه بطيئًا ، نظرًا لجلب حجم الصفيف في كل تكرار.
|
|
|
|
لحل هذه المشكلة ، من الممكن وضع حجم الصفيف في متغير.
|
|
|
|
`//create the $size variable with a second expression comma separated
|
|
for ($i = 0, $size = count($arr); $i < $size; ++$i) {
|
|
`
|
|
|
|
### معلومات اكثر
|
|
|
|
* [PHP.net - هياكل التحكم](https://secure.php.net/manual/en/control-structures.for.php) |