TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #366 334

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
  • 🔥 4
  • 👍 2
  • ❤ 1
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
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 →