TGViewer
| کانال توسعه‌دهندگان لاراول | | کانال توسعه‌دهندگان لاراول | @developixlaravel · 1.54K subscribers
Post #141 1.09K

Forwarded from | کانال توسعه‌دهندگان PHP |

🔰 در این سوال نکات زیادی حائز اهمیت است که معمولا در نظر گرفته نمی‌شود.

🔍 در ادامه، ساختار حلقه را به‌طور مفصل بررسی می‌کنیم:

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 1

3- بررسی قسمت سوم (تغییر مقدار 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
  • 👍 9
More from @developixlaravel
  1. Oct 1, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول در لاراول، روابط…
  2. Sep 30, 2026مدیریت همزمانی و قفل‌گذاری روی پردازش‌ها در لاراول (Laravel Atomic Locks) در بخش چهارم از…
  3. Sep 26, 2026🔥 پکیج: ورود با حساب‌های دیگر؛ Socialite برای اضافه‌کردن ورود با حساب‌های دیگر به پروژه ل…
  4. Sep 25, 2026🔒 فقط داده‌های تأییدشده را ذخیره کن وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاو…
  5. Sep 20, 2026حفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی در قسمت سوم از مجموعه آموزش…
  6. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →