با سلام خدمت اساتید محترم. بنده برنامهنویسیِ صفحهٔ اینترنتی انجام میدهم. برای طراحی یک قسمت گیر کردم.

شکل بالا رو نگاه کنید. تعداد گزینهها (آیتمها) باید مضربی از ۳ باشد، مانند ۳، ۶ و ۹. در برنامهنویسی یک چیزی داریم به نام foreach
که باعث میشود به تعداد هر کدام از گزینهها یک جعبهٔ مشکی ایجاد بشود، همانگونه که در شکل میبینید. اما من میخواستم به ازای هر سه گزینه یک جعبهٔ مشکی ایجاد بشود. برای این کار من هر بار که foreach
اجرا میشود یک واحد به متغیر $k$ میافزایم. یعنی گفتم هر زمانی که شرط زیر روی داد یک جعبهٔ سیاه بسازد و گزینههای بعد از آخرین جعبهٔ پیشین تا اینجا که ۳ تا میشوند را درونش بگذار.
k % 3 == 0
تا اینجای کار همه چیز درست است. کار دومی که من میخواهم انجام بدهم این است که از این ۹ گزینه بتوانم گزینههای ۱ و ۴ و ۷ را انتخاب کنم. تعداد گزینهها متغیر هستند، برای همین اگر به جای ۹ گزینه، ۳ گزینه داشته باشم آنگاه نوشتن «گزینههای ۱ و ۴ و ۷ را انتخاب کن» به اشکال بر میخورد چون گزینهٔ چهارمی وجود ندارد. چگونه میتوانم به برنامه بگویم که گزینههایی که یک واحد بیشتر از مضربهای ۳ هستند را خودکار انتخاب کند؟ همین کار را اگر بخواهم آنهایی که ۲ واحد بیشتر از مضربهای ۳ هستند و همین طور آنهایی که مضرب ۳ هستند را چگونه باید انجام بدهم؟
@fardina @AmirHosein
با سلام من واقعا متشکرم از پاسختون. من رو ببخشید که خیلی دیر شد.
زبان برنامه نویسی استفاده شده PHP میباشد..
منظورم رو الان براتون کامل توضیح میدم.

این تصویر رو ببینید. از شماره 1 تا 9 شماره گذاری کردم. در این برنامه ما یک آرایه داریم که شامل این 9 تا آیتم هستن. فرض میکنیم اسم این آرایه $my_array
میباشد حالا واسه دسترسی به هر کدوم از این آیتم ها میتونیم به صورت زیر کد نویسی کنیم:
$my_array[1] یا $my_array[2] و .... $my_array[9]
من با این روش میتونم به 9 آیتم آرایه دسترسی پیدا کنم. و کارمو انجام بدم بدون هیچ مشکلی! اما این واسه وقتیه که تعداد آیتم ها ثابت باشن یعنی مثلا همین 9 تا آیتم باشند. ولی اینطور نیست و تعدا آیتم ها ممکنه: 3 یا 6 یا 9 یا 12 ... (کلا هر تعدادی که بشه اونارو سه تا سه تا جدا کرد.) باشد...من اگر بخوام از این روش استفاده کنم هر موقع مدیر سایت خواست تعداد رو افزایش یا کاهش بده من هم باید برم و به همون تعداد از $my_array
استفاده کنم..
خب پس تصمیم میگیریم که از یک تابع به اسم foreach
که بهش میگن حلقه استفاده کنیم.. این تابع میاد آرایه رو تو یک حلقه قرار میده و به ازای هر آیتم اون کارهایی که میخوایم رو انجام میده مثلا:

خب کد بالا میاد به تعداد هر کدوم از آیتم ها اسم اون آیتم(که نام دسته بندی) و تصویر (که تصویر شاخص دسته بندی) هست رو نشون میده به چه شکلی؟؟؟ همون تصویری که بالا براتون گذاشتم.. پشت سر هم بدون اینکه بشه بهش گفت مثلا بیا سه تارو باهم نشون بده بعد برو سه تای بعدی یا خیلی چیزای دیگه...
حالا اگه من بخوام سه تا آیتم رو درون یک باکس قرار بدم نه یکی یکی مثل تصویر زیر:

میام حلقه رو به صورت زیر تغییر میدم:

خب اول هر کدی که نوشتم رو توضیح بدم:
1- ایجاد کردن متغییری به اسم $k
و برابر کردن اون با صفر.
2- برای ایجاد باکس از کد <div>
استفاده میشه که شروع باکس و پایان باکس با </div>
.
3- برای چاپ کردن هم از کد echo
استفاده میشه.
4- برای اینکه بفهمیم درون آرایه دقیقا چند آیتم وجود داره از کد count($my_array)
استفاده میشه.
5- ایجاد شرط کد if
و اگر شرط برقرار نبود کد else
حالا من حلقه رو شروع کردم و به ازای هر آیتم که حلقه اجرا میشه یک واحد به متغییر $k
اضافه کردم...
دو تا خط بعدی اومدم اسم دسته بندی و تصویرش رو چاپ کردم.
خط بعدی اومدم شرطی رو گزاشتم برای بسته شدن باکس(</div>
) گفتم اگر: $k % 3 == 0
و همچنین متغییر $k
کوچیک تر از تعداد کل آیتم های آرایه (count($my_array)
) اگر این دو شرط برقرار بود باکس رو میبنده (< /div>
) بعد از بستن باکس میاد باکس بعدی رو باز میکنه (< div>
) . با این حساب باکسی که خارج از حلقه ایجاد شده اگر شرط برقرار بود اون باکس رو میبنده و یک باکس جدید درست میکنه برای سه آیتم بعدی و همینجور میره تا آخر که دیگه شرط قابل قبول نباشه در اینصورت با کد else
میگیم فقط باکس رو ببند (< /div>
) که آخرین باکس ایجاد شده رو میبنده و دیگه نیاز نیست باکس جدیدی بسازه!
خب با کدهای بالا به ازای هر سه آیتم باکس ایجاد میکنه که دقیقا تصویر بالا ایجاد میشه....
تا اینجای کار همه چیز درسته. خب آخرین چیزی که من میخوام انجام بدم انتخاب کردن آیتم اول، دوم و سوم هر باکس. یعنی:
اول انتخاب: 1، 4 و 7
بعد انتخاب: 2، 5 و 8
و در آخر انتخاب: 3، 6 و 9
باید به صورتی باشه که اگر تعدا از 9 تا به 12 تا ارتقا پیدا کرد که میشه چهار باکس نیاز به تغییر کد ها برای انتخاب هر آیتم نباشه درست مثل کد: $k % 3 == 0
که سه تا سه تا جدا میکرد و دیگه نیاز نیست با تغییر تعدا آیتم ها این کد هم تغییر بکنه!
از شما دوستان و اساتید گرامی کمال تشکر رو دارم، و منو به خاطر طولانی شدن این سوال ببخشید. امیدوارم بتونم برای شما عزیزان جبران کنم..