PDA

View Full Version : کارد نکردن این کد (ساده)



mamadco
چهارشنبه 27 اسفند 1393, 19:43 عصر
میخوام از 100 تا مثلا 5 و 2 نمایش داده نشن

<?php
for($i=1;$i<=100;$i++){
switch($i){
case 5:
case 2:

continue;
break;

}
if($i==(3)){
continue;
}

echo $i.'</br>'.PHP_EOL;

}
?>
دستور ایف کار کرد و سه رو نشون نداد ولی سویچ کاری رو انجام نداد :(

Unique
پنج شنبه 28 اسفند 1393, 02:35 صبح
مشکل کد شماست ، در php وقتی توی switch از continue استفاده میکنید مثل اینه که دارین break میکنید. برای حل مشکل باید بگین یک سطح بالاتر را continue کنه اینطوری :


for($i=1;$i<=10;$i++){
switch($i){
case 5:
case 2:
continue 2;
break;
}
if($i==3){
continue;
}

echo $i.'</br>'.PHP_EOL;

}

us1234
پنج شنبه 28 اسفند 1393, 08:41 صبح
میخوام از 100 تا مثلا 5 و 2 نمایش داده نشن

دستور ایف کار کرد و سه رو نشون نداد ولی سویچ کاری رو انجام نداد :(

علت خاصی دارد که از switch استفاده می کنید ؟


<?php
for($i=1;$i<=100;$i++)
{
if($i != 2 && $i != 5)
{
echo $i.'</br>'.PHP_EOL;
}
}
?>

Unique
پنج شنبه 28 اسفند 1393, 12:22 عصر
علت خاصی دارد که از switch استفاده می کنید ؟
قطعا روش های گوناگونی وجود داره ! دوستمون میخوان کار با switch را یاد بگیرن اما مثال نا متعارفی را انتخاب کردند.

mamadco
پنج شنبه 28 اسفند 1393, 12:33 عصر
قطعا روش های گوناگونی وجود داره ! دوستمون میخوان کار با switch را یاد بگیرن اما مثال نا متعارفی را انتخاب کردند.
ممنون استاد این چن وقته داری راهنمایی میکنه . منظور از مثال نا متعارف چیه ؟ مثلا من میخواستم از if استفاده نکنم چون توی سویچ کدهای کمتری میبره به نظرم .
بعد استاد اینا برای اعداد استفاده میشه ، چطور میشه از for برای حلقه کردن دستورات html استفاده کرد ، من تا اینجا رو اعداد کار کردم :(

mamadco
پنج شنبه 28 اسفند 1393, 12:37 عصر
علت خاصی دارد که از switch استفاده می کنید ؟


<?php
for($i=1;$i<=100;$i++)
{
if($i != 2 && $i != 5)
{
echo $i.'</br>'.PHP_EOL;
}
}
?>

یه مشکلی که با مثالی که شما زدی برطرف شد ، این بود که من کدتون رو اینطوری برا خودم ترجمه کردم : خوب حلقه را ایجاد کن اگر برابر با دو و پنج نبود متغیر رو اکو کن ، ولی باید اینطوری میشد حلقه رو اکو کن به شرطی که که متغیر این اعداد رو تو خودش نداشته باشه . ممنون

Unique
پنج شنبه 28 اسفند 1393, 14:21 عصر
ممنون استاد
شرمنده ها ، اما به من نگین استاد ، هر کسی لیاقت این لقب ها را نداره از جمله بنده ، همون یونیک خوبه.


منظور از مثال نا متعارف چیه ؟
برای آموزش یک مبحث مخصوصا برای افرادی که تازه می خوان یک چیزی را یاد بگیرند خوب نیست توش نکته وجود داشته باشه ، continue توی switch را خیلی از برنامه نویس های متوسط به بالا هم ممکنه ندونن چه تاثیری داره و چطور استفاده کنند. (آخه کاربرد آنچنانی نداره) اونوقت شما توی یک مثال استفاده کردید. برای همین میگم نا متعارف.


مثلا من میخواستم از if استفاده نکنم چون توی سویچ کدهای کمتری میبره به نظرم .
هر کدوم برای جایی مناسب هستند و در مورد مثال شما if خیلی خیلی بهتره ! switch را وقتی استفاده کنید که بیش از یک case و break بخوره !


چطور میشه از for برای حلقه کردن دستورات html استفاده کرد ، من تا اینجا رو اعداد کار کردم
فرقی نداره :


<?php
$names = array("Ali","Reza","Saeed","Hamid","Shahin","Mahdi","Kamal","Arash","Majid");
echo "<table>";
echo "<tr><td width='30'><b>#</b></td><td width='100'><b>Name</b></td></tr>";
for($i=0;$i<count($names);$i++)
{
echo "<tr><td>".($i + 1)."</td><td>{$names[$i]}</td></tr>";
}
echo "</table>";
?>


حلقه رو اکو کن به شرطی که که متغیر این اعداد رو تو خودش نداشته باشه
میتونید از in_array استفاده کنید. اینطوری :

<?php
for($i=1;$i<=100;$i++)
{
if(!in_array($i,array(2,5)))
{
echo $i.'</br>'.PHP_EOL;
}
}
?>

us1234
پنج شنبه 28 اسفند 1393, 15:11 عصر
یه مشکلی که با مثالی که شما زدی برطرف شد ، این بود که من کدتون رو اینطوری برا خودم ترجمه کردم : خوب حلقه را ایجاد کن اگر برابر با دو و پنج نبود متغیر رو اکو کن ، ولی باید اینطوری میشد حلقه رو اکو کن به شرطی که که متغیر این اعداد رو تو خودش نداشته باشه . ممنون

هدف اصلی اگر آموزش است برای switch و for این صورت مساله جالب تر است :

از اعداد 1 تا 100 اگر عدد انتخابی اگر مضرب 2 است کلمه Multiple of 2 ، اگر مضرب 3 است کلمه Multiple of 3 ، اگر مضرب 5 است کلمه Multiple of 5 ، در غیر این صورت not define را در خروجی چاپ کنید .

ولی در خصوص سوال و ابهام که پیش آماده . یک اصل در ریاضی هست به نام دمورگان ، مثلا همین شرط که من نوشتم با دمورگانش ( همان که شما میگوید ) برابر است :


if($i == 2 || $i == 5)
{
continue;
}else
{
echo $i.'</br>'.PHP_EOL;
}


الان برنامه نویس ها متاسفانه ( یا خوشبختانه ) کمتر ریاضی ( بخصوص ریاضی گسسته ) مطالعه می کنند در صورتی که برنامه نویسی زاده ریاضیات است .

mamadco
جمعه 29 اسفند 1393, 10:49 صبح
شرمنده ها ، اما به من نگین استاد ، هر کسی لیاقت این لقب ها را نداره از جمله بنده ، همون یونیک خوبه.


برای آموزش یک مبحث مخصوصا برای افرادی که تازه می خوان یک چیزی را یاد بگیرند خوب نیست توش نکته وجود داشته باشه ، continue توی switch را خیلی از برنامه نویس های متوسط به بالا هم ممکنه ندونن چه تاثیری داره و چطور استفاده کنند. (آخه کاربرد آنچنانی نداره) اونوقت شما توی یک مثال استفاده کردید. برای همین میگم نا متعارف.


هر کدوم برای جایی مناسب هستند و در مورد مثال شما if خیلی خیلی بهتره ! switch را وقتی استفاده کنید که بیش از یک case و break بخوره !


فرقی نداره :


<?php
$names = array("Ali","Reza","Saeed","Hamid","Shahin","Mahdi","Kamal","Arash","Majid");
echo "<table>";
echo "<tr><td width='30'><b>#</b></td><td width='100'><b>Name</b></td></tr>";
for($i=0;$i<count($names);$i++)
{
echo "<tr><td>".($i + 1)."</td><td>{$names[$i]}</td></tr>";
}
echo "</table>";
?>


میتونید از in_array استفاده کنید. اینطوری :

<?php
for($i=1;$i<=100;$i++)
{
if(!in_array($i,array(2,5)))
{
echo $i.'</br>'.PHP_EOL;
}
}
?>

خوب شما یه چی به من یاد میدی استادم میشی دیگه :D به هر حال تو زبونم افتاده شرمنده اگه ناراحت میشی :قلب:
یونیکو ! این $i<count($names) بعنی به تعداد متفیر $names حلقه باشه ؟ count هنوز نمیدونم چیه !
if(!in_array($i,array(2,5))) خیلی دنبال دستوری بودم که بتونه از آرایه انتخاب کنه ولی پیدا نکردم :D
مرسی یونیکو جان

mamadco
جمعه 29 اسفند 1393, 10:51 صبح
هدف اصلی اگر آموزش است برای switch و for این صورت مساله جالب تر است :

از اعداد 1 تا 100 اگر عدد انتخابی اگر مضرب 2 است کلمه Multiple of 2 ، اگر مضرب 3 است کلمه Multiple of 3 ، اگر مضرب 5 است کلمه Multiple of 5 ، در غیر این صورت not define را در خروجی چاپ کنید .

ولی در خصوص سوال و ابهام که پیش آماده . یک اصل در ریاضی هست به نام دمورگان ، مثلا همین شرط که من نوشتم با دمورگانش ( همان که شما میگوید ) برابر است :


if($i == 2 || $i == 5)
{
continue;
}else
{
echo $i.'</br>'.PHP_EOL;
}


الان برنامه نویس ها متاسفانه ( یا خوشبختانه ) کمتر ریاضی ( بخصوص ریاضی گسسته ) مطالعه می کنند در صورتی که برنامه نویسی زاده ریاضیات است .

مرسی us1234 که برام وقت گذشتی ایشالله جبران کنم :قلب:

Unique
جمعه 29 اسفند 1393, 12:09 عصر
یونیکو ! این $i<count($names) بعنی به تعداد متفیر $names حلقه باشه ؟ count هنوز نمیدونم چیه !

بله count تعداد عناصر آرایه را میشماره. در ضمن یونیکو نه یونیک.

mamadco
جمعه 29 اسفند 1393, 12:31 عصر
بله count تعداد عناصر آرایه را میشماره. در ضمن یونیکو نه یونیک.

:لبخند: مرسی یونیکو جان :چشمک: الحق یونیکوئی :قلب: آرایه ها رو تموم کردم رسیدم جلسه 4 آموزش هاشون(آقای شهرکی) که توی فایل pdf بود و کاملا واضح بودکه از جلسه سه به بعد رو وقت نکردن بزارن و از یه منبع دیگه گذاشتن . بعضی چیزا عقب و جلو شد ای باو:گریه:

hamedarian2009
جمعه 29 اسفند 1393, 12:58 عصر
:لبخند: مرسی یونیکو جان :چشمک: الحق یونیکوئی :قلب: آرایه ها رو تموم کردم رسیدم جلسه 4 آموزش هاشون(آقای شهرکی) که توی فایل pdf بود و کاملا واضح بودکه از جلسه سه به بعد رو وقت نکردن بزارن و از یه منبع دیگه گذاشتن . بعضی چیزا عقب و جلو شد ای باو:گریه:

میشه جناب یونیک رو اصلا چیزی صدا نکنی :چشمک:
نخیر عزیزم این أموزش ها همش توسط مهندس شهرکی ایجاد شدن و از منبع دیگه ای استفاده نشده فقط ایشون در ابتدا آموزش هاشون در قالب pdf بود ولی بعدا اومدن تا جلسه سوم رو ویرایش کردن و به صورت آنلاین در سایت قرار دادن اما احتمالا به خاطر مشغله کاری ادامه ندادن

MMSHFE
جمعه 29 اسفند 1393, 15:29 عصر
اینطوری بهتره بنویسید:

<?php
$names = array('Ali', 'Reza', 'Saeed', 'Hamid', 'Shahin', 'Mahdi', 'Kamal', 'Arash', 'Majid');
echo '<table>';
echo '<tr><td width="30px"><b>#</b></td><td width="100px"><b>Name</b></td></tr>';
$c = count($names);
for($i = 0; $i < $c; $i++) {
echo '<tr><td>' . ($i + 1) . '</td><td>' . $names[$i] . '</td></tr>';
}
# OR :
# foreach($names as $i => $name) {
# echo '<tr><td>' . ($i + 1) . </td><td>' . $name . '</td></tr>';
# }
echo '</table>';
?>

<?php
$banned = array(2, 5);
for($i = 1; $i <= 100; $i++) {
if(!in_array($i, $banned)) {
echo '<p>' . $i . '</p>' . PHP_EOL;
}
}
?>

mamadco
جمعه 29 اسفند 1393, 17:32 عصر
میشه جناب یونیک رو اصلا چیزی صدا نکنی :چشمک:
نخیر عزیزم این أموزش ها همش توسط مهندس شهرکی ایجاد شدن و از منبع دیگه ای استفاده نشده فقط ایشون در ابتدا آموزش هاشون در قالب pdf بود ولی بعدا اومدن تا جلسه سوم رو ویرایش کردن و به صورت آنلاین در سایت قرار دادن اما احتمالا به خاطر مشغله کاری ادامه ندادن
بابا یونیک نه یونیکو :D ، حالا باید یه جوری خطاب قرار بدم که . . . ، اخه من از متن آموزش یه سرچ گرفتم تو گوگل عزیزمون یه سایت دیگه رو نشون داد .!

mamadco
جمعه 29 اسفند 1393, 17:33 عصر
اینطوری بهتره بنویسید:

<?php
$names = array('Ali', 'Reza', 'Saeed', 'Hamid', 'Shahin', 'Mahdi', 'Kamal', 'Arash', 'Majid');
echo '<table>';
echo '<tr><td width="30px"><b>#</b></td><td width="100px"><b>Name</b></td></tr>';
$c = count($names);
for($i = 0; $i < $c; $i++) {
echo '<tr><td>' . ($i + 1) . '</td><td>' . $names[$i] . '</td></tr>';
}
# OR :
# foreach($names as $i => $name) {
# echo '<tr><td>' . ($i + 1) . </td><td>' . $name . '</td></tr>';
# }
echo '</table>';
?>

<?php
$banned = array(2, 5);
for($i = 1; $i <= 100; $i++) {
if(!in_array($i, $banned)) {
echo '<p>' . $i . '</p>' . PHP_EOL;
}
}
?>

ممنون بله اینم هست ، بعدا که میخوای یه چیو تغییر بدی کارت راحت تر باشه :قلب:

mamadco
جمعه 29 اسفند 1393, 18:47 عصر
بابا یونیک نه یونیکو :D ، حالا باید یه جوری خطاب قرار بدم که . . . ، اخه من از متن آموزش یه سرچ گرفتم تو گوگل عزیزمون یه سایت دیگه رو نشون داد .!
oh my god تازه گرفتم که بعضی توابع در php به صورت ثابت نیستن و خودمون اونارو به وجود میاریم ، من فک کردم اینا از قبل تعریف شده اند کارهای خاصی با هر کدوم میشه باهاشون انجام داد .اقای شهرکی هم توی آموزشاش توابع تعریف میکرد اما توضیح نمیداد دلیلش این بود که توابع رو خودش به وجود اورده و نام گذاری کرده :D
What a fool I :گیج:

mamadco
جمعه 29 اسفند 1393, 21:59 عصر
ببخشیدا از همه یه مورد دیگه برام پیش اومد برای کاراکتر اومدم چند روش رو برا خودم تست کردم که بعضی موارد از یک آرایه رو نشون نده :

<?php
$names = array(0=>'ali','reza',2=>'saeed');

foreach($names as $e => $name){
if(!in_array($name,array('ali',$names[2]))){


echo $name.($e+1).'</br>';}

}?>
اما نتونستم در شرطم طوری تعیین کنم که براساس شماره ی آرایه اونا رو نشون نده ، دیگه مجبور نباشم از $moteghyer [adda] استفاده کنم ؟ برای سهولت کار :)

MMSHFE
شنبه 01 فروردین 1394, 08:54 صبح
ممنون بله اینم هست ، بعدا که میخوای یه چیو تغییر بدی کارت راحت تر باشه :قلب:

فقط بخاطر این نیست. ازنظر مصرف حافظه و سرعت پردازش هم بهتره.

mamadco
شنبه 01 فروردین 1394, 10:46 صبح
فقط بخاطر این نیست. ازنظر مصرف حافظه و سرعت پردازش هم بهتره.

عجب :متفکر: ممنون که مطلع کردین :قلب: فقط اگه میشه سوال بالاییم رو یه نگاه بندازین :خجالت:

MMSHFE
یک شنبه 02 فروردین 1394, 08:29 صبح
لطفاً بیشتر منظورتونو توضیح بدین. متوجه نشدم میخواین چیکار کنین.

C-man 15
یک شنبه 02 فروردین 1394, 09:54 صبح
میخوام از 100 تا مثلا 5 و 2 نمایش داده نشن

<?php
for($i=1;$i<=100;$i++){
switch($i){
case 5:
case 2:

continue;
break;

}
if($i==(3)){
continue;
}

echo $i.'</br>'.PHP_EOL;

}
?>
دستور ایف کار کرد و سه رو نشون نداد ولی سویچ کاری رو انجام نداد :(

خب کنتنیو تو سویچ باعث می شه که به کیس بعدی بره و چون کیس بعدی وجود نداره کلا از سویچ خارج میشه و سیوچ هم به کد اکو بیرون شما ربطی نداره و کلا همه اعداد رو چاپ می کنه شما برای این کار باید تو سویچ یه دیفالت میذاشتی که اگه هیچکدوم از کیس ها نشد بیاد چاپ کنه و اگه 2 و 5 بود چاپ نکنه





for ($i = 1; $i <= 100; $i++) {
switch ($i) {
case 5:
case 2:
break;
default :
echo $i . ' ' . PHP_EOL;
}

}

alinwp
یک شنبه 02 فروردین 1394, 18:26 عصر
<?php
for($i=1;$i<=100;$i++){
$l = 1;
switch($i){
case 5:
$l = 0;
case 2:
$l = 0;
}
if($l==1){
echo $i.'</br>'.PHP_EOL;
}
}

C-man 15
دوشنبه 03 فروردین 1394, 09:54 صبح
<?php
for($i=1;$i<=100;$i++){
$l = 1;
switch($i){
case 5:
$l = 0;
case 2:
$l = 0;
}
if($l==1){
echo $i.'</br>'.PHP_EOL;
}
}

دادش من چرا خودتون رو آزار میدید اخه if لازم نیست که همینطور که در بالا گفتم یه default بزار کد اجرا بشه