🔍 در ادامه، ساختار حلقه را بهطور مفصل بررسی میکنیم:
for ($i = 10; $i--; $i > 0) {
echo "$i ";
}خروجی این حلقه بهصورت زیر خواهد بود:
9 8 7 6 5 4 3 2 1 0⁉️ اما چرا؟
بیایید ساختار حلقه را از ابتدا بررسی کنیم.
🔰 ساختار کلی حلقه for
حلقه for از سه بخش تشکیل شده است:
1- شروع: مقداردهی اولیه متغیر حلقه.
این بخش تنها یک بار در ابتدای حلقه اجرا میشود.
2- شرط ادامه: تعیین میکند که آیا حلقه ادامه یابد یا متوقف شود.
این بخش در هر تکرار، قبل از اجرای بدنه اجرا شده و شرط اجرای بدنه را بررسی میکند.
3- تغییر مقدار: مقدار متغیر حلقه را تغییر میدهد.
این بخش پس از اجرای بدنه حلقه اجرا میشود.
🔰 بررسی اجرای حلقه ذکر شده
1- مقداردهی اولیه:
- ابتدا متغیر
$i مقدار 10 میگیرد و اجرای این بخش پایان مییابد.2- بررسی شرط (
$i--)در این قسمت نکات مهمی وجود دارد:
- هر عدد به جز 0 مقدار true دارد، بنابراین تا زمانی که
$i به 0 نرسد، حلقه ادامه خواهد داشت.- در عبارت
$i-- از عملیات post-decrement استفاده شده است، یعنی ابتدا مقدار فعلی $i برای بررسی شرط استفاده میشود، سپس مقدار $i کاهش مییابد.- - به همین دلیل عدد 0 نیز چاپ خواهد شد.
- - مقدار
$i بعد از کاهش وارد بدنه حلقه میشود، بنابراین چاپ اعداد از 9 شروع میشود.اگر حلقه به این صورت نوشته میشد:
for ($i = 10; --$i; $i > 0) {
echo "$i ";
}در این حالت، ابتدا مقدار
$i کاهش مییابد و سپس شرط بررسی میشود زیرا از عملیات pre-decrement، بنابراین 0 چاپ نمیشود و خروجی به این شکل خواهد بود:9 8 7 6 5 4 3 2 13- بررسی قسمت سوم (تغییر مقدار update)
- بخش سوم این حلقه روی مقدار
$i تغییری ایجاد نمیکند، بنابراین عملاً بیاثر است و میتوان حلقه را سادهتر نوشت:for ($i = 10; $i--;) {
echo "$i ";
}🔰 مرور روند اجرای حلقه ذکر شده
- مقدار دهی اولیه i با 10
- بررسی 10 == true، کاهش 10 به 9، چاپ 9
- بررسی 9 == true، کاهش 9 به 8، چاپ 8
.
.
.
- بررسی 2 == true، کاهش 2 به 1، چاپ 1
- بررسی 1 == true، کاهش 1 به 0، چاپ 0
- بررسی 0 == true، پایان حلقه
❗️ درک درست post-decrement ($i--) و pre-decrement (--$i) در حلقهها اهمیت زیادی دارد و تفاوتهای ظریفی در خروجی ایجاد میکند.
🔖 #PHP, #پی_اچ_پی, #چالش
👤 AmirHossein
💎 Channel: @DevelopixPHP