با عرض سلام خدمت کاربران سایت پی وی لرن. در این جلسه قصد داریم تا به حلقه های تکرار در PHP بپردازیم.
اغلب پیش می آید که شما می خواهید قطعه ای از کد را بار ها و بارها اجرا کنید. ما میتوانیم به جای نوشتن چندین بار یک قطعه کد از حلقه های تکرار(loop) نظیر for و while استفاده نماییم.
در php ما دستورات زیر را برای حلقه های تکرار داریم
سینتکس دستور :
1 2 3 | while (شرط) { تا زمانی که شرط برقرار هست اجرا می شود } |
به مثال زیر توجه فرمایید:
1 2 3 4 5 6 7 8 | <?php $x = 1; while($x <= 5) { echo "The number is: $x <br>"; $x++; } ?> |
سینتکس دستور
1 2 3 | do { تا زمانی که شرط برقرار باشد اجرا می شود } while (شرط); |
به مثال زیر توجه فرمایید:
1 2 3 4 5 6 7 8 | <?php $x = 1; do { echo "The number is: $x <br>"; $x++; } while ($x <= 5); ?> |
سینتکس دستور
1 2 3 | for (init counter; test counter; increment counter) { //code } |
پارامتر ها به شرح زیر می باشد:
مثال زیر اعداد ۱ تا ۱۰ را چاپ می کند:
1 2 3 4 5 | <?php for ($x = 0; $x <= 10; $x++) { echo "The number is: $x <br>"; } ?> |
سینتکس دستور
1 2 3 | foreach ($array as $value) { //code } |
در هر تکرار حلقه، مقدار عنصر کنونی آرایه به متغیر value$ اختصاص میابد و اندیس آرایه در هر مرحله یک خانه به جلو حرکت می کند تا به آخرین عنصذ آرایه برسد.
مثال زیر تمام عناصر آرایه colors$ را چاپ می کند
1 2 3 4 5 6 7 | <?php $colors = array("red", "green", "blue", "yellow"); foreach ($colors as $value) { echo "$value <br>"; } ?> |
در جلسات آتی درباره آرایه ها نیز مطلبی منتشر خواهیم کرد.
امیرحسین
سلام
ی آرایه ای مشابه آرایه پایین وجود داره.
Red Yellow Green Blue Purple Brown Magenta Tan Cyan Olive Maroon Navy Aquamarine Turquoise Silver Lime Teal
میخوام با ی تابعی و تعداد خاص ولی غیر تکرار جای این اسم ها تغییر کنه.
مثال ۳ تایی
Red Yellow Green
Red Yellow Blue
Red Yellow Purple
Red Yellow Brown
….
Silver Lime Teal
حتی بتونم ۴ تایشم داشته باشم.
اگه میشه کمکم کنید.
صادق
سلام.
می تونید از ۳ حلقه تودرتو استفاده کنید.
$length = count($array);
for($i = 0; $i<$length-2; $i++)
{
for($j = $i+1; $j<$length-1; $j++)
{
for($x = $j+1; $x<$length; $x++)
{
print $array[$i] . " " . $array[$j] . " " . $array[$x] . "\n";
}
}
}
برای ۴ تایی جدا کردن هم از ۴ حلقه تودرتو استفاده کنید.
البته من این کد رو تست نکردم و نمی دونم درست هست یا نه ولی احتمالا باید درست باشه.
امیرحسین
سلام.ممنون که پاسخ دادین دوست عزیز.ولی متاسفانه درست نبود.
این کدو پیدا کردم.
<?php
$chars = array('AAA','BBB','CCC','DDD','FFF','EEE');
$words = [];
foreach ($chars as $char1) {
foreach ($chars as $char2) {
foreach ($chars as $char3) {
foreach ($chars as $char4) {
echo $words[] = $char1 .' '. $char2 .' '. $char3 .' '. $char4.'’;
}
}
}
}
ولی ی مشکل دارم.
نمیخوام برای مثال AAA توو ی ردیف چند بار تکرار بشه.
صادق
کدی که نوشته بودم رو بررسی و تست کردم. مشکل نحوی داشت اما الگوریتمش درسته. کافیه به جای عملگر + از عملگر . توی دستور print استفاده کنی. کد رو اصلاح کردم می تونی ببینی و خروجیش مثل مثالی هست که توی کامنت اول نوشته بودید.
حسن
سلام
دوستان من نیاز به کدی دارم که این کارو انجام بده:
دوتا لیبل دارم x1 و x2 که اعداد تصادفی بهشون داده میشه. وقتی وارد صفحه تماس با ما میشیم این اعداد تصادفی به لیبل ها داده میشه. برای سوال تصادفی هست.
اینم کدش:
session_start();
$_SESSION[‘N1’] = rand(1,9);
$_SESSION[‘N2’] = rand(1,9);
$_SESSION[‘Expect’] = $_SESSION[‘N1’] + $_SESSION[‘N2’];
بعد وقتی کابر دگمه Submit کلیک کنه بررسی میشع که سوال تصادفی درست هست یا نه!
تا اینجای کارم حله!
اما الان من میخوام وقتی کاربر روی دگمه Submit کلیک کرد اگه مقدار وارد شده اشتباه باشه این اعداد تصادفی دوباره تولید بشه و جایگذاری بشه! یعنی اعداد قبل حذف بشه اعداد تصادفی جدید ثبت بشه و عمل مقایسه با اعداد جدید برسی بشه و همین طور ادامه داشته باشه تا کاربر جواب درست رو وارد کنه.
توی همه سایت ها استفاده میشه اما من بلد نیستم. ممنون میشم کمک کنید.
باتشکر
حسن
دوستان عزیز به زبان php میخوام باشه. به زبان جاوااسکریپت پیدا کردم که با رویداد کلیک بررسی میشه. اما من به زبان php و html میخوام. ممنون میشم کمک کنید.
صادق
سلام.
این موردی که شما میگی یک پردازش در سمت کاربر یا کلاینت هست. یعنی بهتره کلا با جاوا اسکریپت پیاده سازی بشه. اما اگر میخواید پردازش ها در سمت سرور انجام بشه می تونید از Ajax استفاده کنید. در این صورت باز هم باید از جاوا اسکریپت استفاده کنید.
حسن
سلام عذر میخوام دوست عزیز اگه امکانش باشه با ajax راهنمایی کنین چیکار کنم من این فرم رو از لینک زیر دانلود کردم.
این فرم هم با Ajax هست و خیلی خوبه برام.
میخوام وقتی اعتبار سنجی میشه وقتی فیلدی نامعتبر بود سوال تصادفی تغییر کنه. همه فرم ها این مدلی هستن اما این نیست. ممنون میشم کمکم کنین. باتشکر از شما
حسن
سلام دوست عزیز من
اگه میشه با Ajax راهنمایی کنید تا یاد بگیرم. خیلی ممنون از شما
صادق
سلام. ببینید من گفتم اگر پردازش سمت سرور دارید می تونید از Ajax استفاده کنید. با توجه به فرم شما من نیازی نمی بینم از Ajax استفاده کنید و همه کار ها می تونه با خود javascript حل بشه. بنابراین بهتره از همون جاوااسکریپت یا جی کوئری استفاده کنید. در مورد کد متاسفانه نمی تونم کمکتون کنم.
علی
سلام دوستان
ببخشید سوال نابجا اینجا میپرسم.
من سایتی طراحی کردم مثلا بعضی از متن ها رنگ ابی داره میخوام فقط با یک کلیک یا تغییر یک چیزی کل رنگ های ابی به نارنجی تغییر کنه. کسی میتونه کمکم کنه؟
خیلی از سایت ها یه باکس کوچک دارن برای تغییر رنگ متن ها. منم مثل اون میخوام بیینده با کلیک روی یک گزینه رنگ ها تغییر کنه. ممنون میشم راهنمایی کنید
صادق
سلام. شما این کار رو می تونید به راحتی با زبان جاوا اسکریپت انجام بدید.