article

عملگرها (Operators) در PHP

php-operators

مانند بسیاری از زبان های برنامه نویسی، PHP نیز از قوانین و عملگرهای خاصی جهت محاسبه، مقایسه مقادیر و استدلال منطقی استفاده می کند، در بحث پیشین از بخش آموزش های مقدماتی دیدیم که چگونه می توان متغیرها را تعریف و مقادیر آنها را تغییر داد، همچنین گفتیم که مقادیر متغیر می تواند هر نوع داده ای باشد که در کدنویسی برنامه مورد نیاز است (Int، String، Array، Boolean و...) که در PHP مقدار متغیر نوع آن را مشخص می کند، به طور مثال اگر متغیری مقدار عددی داشته باشد نوع آن متغیر نیز به صورت خودکار عدد (Int) در نظر گرفته می شود، به هر صورت در این مطلب می خواهیم ببینیم مفسر PHP چگونه با مقادیر متغیرها محاسبه و آنها را با هم مقایسه می کند، همچنین نگاهی خواهیم داشت به عملگرهای منطقی که جز عملگرهای پرکاربرد در زبان های برنامه نویسی و از جمله PHP هستند.

عملگرهای محاسبه (Arithmetic Operators) در PHP


در PHP با استفاده از علائمی که در ادامه خواهیم دید محاسبات ریاضی را انجام می دهیم، منظور از محاسبات ریاضی عمل جمع، تفریق، ضرب، تقسیم، باقیمانده بخش پذیری و به توان رساندن است که هر کدام از این موارد با یک علامت بخصوص به شرح زیر مشخص می شوند.
برای عمل جمع در PHP از علامت + استفاده می کنیم، به طور مثال:
$a = 5;
$b = 8;
$addition = $a + $b;
در مثال بالا دو متغیر فرضی a و b را با هم جمع کرده ایم که حاصل مقدار 13 خواهد شد (در صورت نیاز برای چاپ خروجی از دستور echo استفاده می کنیم)، همان طور که مشخص است نوع متغیرها به صورت عدد یا Int هستند، اگر یکی از متغیرها از نوع دیگری باشد عمل جمع ممکن است با خطا مواجه شود (اگر مقدار متغیر صرفا یک عدد بوده حتی اگر بین علامت های ' ' و " "  باشد، مفسر PHP به صورت خودکار نوع آن را به Int تبدیل کرده و اشکالی در محاسبه بروز نمی کند، اما اگر مقدار متغیر علاوه بر عدد به همراه رشته متنی باشد، محاسبه دچار اشکال خواهد شد)، همین رویه در مورد علامت های دیگر مربوط به محاسبه در PHP صدق می کند.
برای عمل تفریق در PHP از علامت - استفاده می کنیم:
$a = 5;
$b = 8;
$subtraction = $b - $a;
حاصل مثال بالا مقدار 3 خواهد بود.
برای عمل ضرب در PHP از علامت * استفاده می کنیم:
$a = 5;
$b = 8;
$multiplication = $a * $b;
حاصل مثال بالا مقدار 45 خواهد بود.
برای عمل تقسیم در PHP از علامت / استفاده می کنیم:
$a = 5;
$b = 8;
$division = $b / $a;
حاصل مثال بالا به صورت اعشاری و مقدار 1.6 خواهد بود.
برای بدست آوردن باقیمانده بخش پذیری در PHP از علامت % استفاده می کنیم:
$a = 5;
$b = 8;
$modulus = $b % $a;
حاصل مثال بالا مقدار 3 خواهد بود، چرا که 8 تنها یک بار بر 5 بخش پذیر است (یعنی یک 5 تایی در 8 قابل گنجاندن است) و باقیمانده عدد 3 خواهد بود.
و در نهایت برای به توان رساندن در PHP نیز از علامت ** استفاده می کنیم (این قابلیت در نسخه 5.6 و به بعد در دسترس است):
$a = 5;
$b = 8;
$exponentiation = $a ** $b;
که حاصل برابر با مقدار 390625 خواهد بود.
نکته: فراموش نکنیم که برای گرفتن خروجی در PHP باید از دستور print یا echo استفاده کنیم، در غیر این صورت هیچ مقداری در خروجی چاپ نخواهد شد.
<?php
$a = 5;
$b = 8;
$addition = $a + $b;
echo $addition;
print $addition;
?>

عملگر افزایش و کاهش (Increment/Decrement Operators) در PHP


معمولا در هنگام کدنویسی برنامه ها مواردی پیش می آید که نیاز به افزایش یا کاهش مقدار یک متغیر به میزان یک واحد است، اگرچه در حالت عادی می توانیم این کار را با عملگر جمع یا تفریق انجام دهیم اما برنامه نویسان همیشه به دنبال ساده ترین و در عین حال سریعترین روش ها هستند! از این رو به جهت پرکاربرد بودن این دو عملیات در اغلب زبان های برنامه نویسی عملگرهای جداگانه بدین منظور در نظر گرفته شده است که PHP نیز از این قاعده مستثنا نیست، بر این اساس دو علمگر ++ برای افزایش به میزان یک واحد و عملگر -- جهت کاهش به میزان یک واحد برای این هدف استفاده می شوند، مثال:
$a = 5;
$a++;
$b = 5;
$b--;
دقت کنیم محل قرارگیری علامت ++ و -- در قبل یا بعد از متغیر دارای اهمیت است، اگر علامت قبل از متغیر قرار گیرد، ابتدا مقدار یک واحد افزایش یا کاهش می یابد و سپس مقادیر جدید به اصطلاح برگردانده می شود که به آن Pre Increment/Decrement گفته می شود (Pre به معنی پیش، Increment افزایش و Decrement کاهش)، اما اگر علامت بعد از متغیر قرار گیرد، ابتدا مقادیر برگردانده شده و سپس مقدار یک واحد افزایش یا کاهش می یابد که به آن Post Increment/Decrement گفته می شود (Post به معنی ارسال یا در اصطلاح برنامه نویسی برگرداندن)، مثال:
<?php
$a = 5;
echo $a++;
echo '<br>';
$b = 5;
echo $b--;
echo '<br>';
$a = 5;
echo ++$a;
echo '<br>';
$b = 5;
echo --$b;
?>
که نتیجه به صورت زیر خواهد بود.
5
5
6
4
در دو حالت اول ابتدا مقدار متغیر چاپ شده و سپس عملگر افزایش یا کاهش اعمال می شود، اما در دو حالت دوم ابتدا عملگر افزایش یا کاهش اعمال شده و سپس متغیر در خروجی چاپ می شود.

عملگرهای اختصاص دهنده (Assignment Operators) در PHP


در مباحث پیشین گفتیم که برای اختصاص یک مقدار به متغیر از علامت = در PHP استفاده می شود، علامت مساوی را در اصطلاح Assignment Operator یا علامت اختصاص دهنده می گویند، در ادامه خواهیم دید که می توانیم عملگرهای محاسبه و مساوی را با هم ترکیب نموده و عمل محاسبه و اختصاص را به صورت مختصر نویسی انجام دهیم، شیوه مختصرنویسی جهت خواناتر شدن سورس ها و پرهیز از نوشتن کدهای اضافه در برنامه نویسی مورد نیاز است.
علامت =+ معادل عملگر + (جمع) و عملگر = (اختصاص) است، با ترکیب این دو علامت می توانیم ابتدا متغیر را با مقادیر مورد نظر جمع کرده و سپس مقدار جدید را به آن اختصاص دهیم، مثال:
//شیوه عادی
$a = $a + 5;
//شیوه مختصرنویسی
$a += 5;
در صورتی که با دستور echo از متغیر a خروجی بگیریم، با فرض اینکه مقدار اولیه آن برابر با 1 باشد، پس از اعمال عملگر ترکیبی =+ مقدار نهایی برابر با 6 خواهد شد، یادآور می شویم که در نتیجه هیچ تفاوتی بین دو شیوه وجود ندارد، صرفا به جهت خوانا و مختصرنویسی کدها است که استفاده از شیوه ترکیبی در موارد نیاز توصیه می شود.
نکته: علامت + و سایر عملگرهای محاسباتی در شیوه مختصرنویسی باید الزاما قبل از علامت = قرار گیرند، در غیر این صورت عملگر ترکیبی به صورت مورد نظر نتیجه نخواهد داد.
علامت =- معادل عملگر - (تفریق) و عملگر = (اختصاص) است، مثال:
//شیوه عادی
$a = $a - 5;
//شیوه مختصرنویسی
$a -= 5;
علامت =* معادل عملگر * (ضرب) و عملگر = (اختصاص) است، مثال:
//شیوه عادی
$a = $a * 5;
//شیوه مختصرنویسی
$a *= 5;
علامت =/ معادل عملگر / (تقسیم) و عملگر = (اختصاص) است، مثال:
//شیوه عادی
$a = $a / 5;
//شیوه مختصرنویسی
$a /= 5;
علامت =% معادل عملگر % (باقیمانده بخش پذیری) و عملگر = (اختصاص) است، مثال:
//شیوه عادی
$a = $a % 5;
//شیوه مختصرنویسی
$a %= 5;
نکته: برای مقداردهی به متغیرهای رشته ای از علامت ترکیبی =. (Concatenation Assignment) استفاده می شود، PHP بر خلاف JavaScript برای رشته متنی و عدد دو علامت ترکیبی مجزا دارد (در جاوا اسکریپت از علامت =+ هم برای رشته و هم عدد می توانیم استفاده کنیم اما در PHP علامت =+ برای متغیرهای عددی و علامت =. برای متغیرهای رشته ای به کار می رود)، مثال:
//شیوه عادی
$a = $a . 'String';
//شیوه مختصرنویسی
$a .= 'String';

عملگرهای مقایسه (Comparison Operators) در PHP


حال که با علائم محاسباتی و اختصاص دهنده در PHP آشنا شدیم نوبت به فراگیری اصول مقایسه ای است، اما اساسا مقایسه در برنامه نویسی چه فایده ای دارد؟! برای اینکه درک کلی و روشنی از مقایسه و فایده آن در PHP داشته باشیم آموزش را با مثالی ادامه می دهیم، فرض کنیم تعدادی از کاربران وبسایتمان عضو کشوری خاص هستند (اطلاعات آنها در پایگاه داده سایت موجود است)، حال می خواهیم به مفسر PHP بگوییم که اگر کشور کاربر برابر آن عبارت بود امکانات خاصی را برای او نمایش دهد یا زبان سایت را متناسب با زبان کشور او تنظیم نماید، امکان این کار تنها در صورت مقایسه کشور کاربر با عبارتی که مد نظر داریم فراهم می شود و به طور ساده خواهیم نوشت: اگر کشور کاربر برابر عبارت x بود زبان سایت را y قرار بده و...، در برنامه نویسی بررسی این برابر بودن یا نبودن با دستورات شرطی (Conditional Statement) و عملگرهای مقایسه ای (Comparison Operators) انجام می شود، با دستورات شرطی در مباحث آینده آشنا خواهیم شد اما عملگرهای مقایسه ای را در ادامه به صورت موردی بررسی می کنیم.
برای مقایسه برابری مقدار دو طرف رابطه از علامت == در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 5;
($a == $b)
در مثال بالا برابر بودن مقدار متغیر a را با b مقایسه کرده ایم که این مقایسه درست (true) خواهد بود، چون مقدار هر دو متغیر 5 است، با علامت == مقایسه را می توان برای مقادیر رشته ای / عددی نیز انجام داد، به طور مثال مقایسه زیر نیز درست (true) خواهد بود، هرچند نوع متغیر a به صورت عددی (Int) و نوع متغیر b به صورت رشته ای (String) است، به عبارت ساده تر در عملگر == نوع متغیرها لحاظ نمی شود و صرفا مقدار آنها با هم مقایسه می شود.
<?php
$a = 5;
$b = '5';
if($a == $b){
    echo 1;
}else{
    echo 0;
}
?>
که مقدار 1 در خروجی چاپ خواهد شد.
برای مقایسه برابر بودن دو طرف رابطه از هر جهت (نوع و مقدار) از علامت === استفاده می کنیم، مثال:
$a = 5;
$b = '5';
($a === $b)
در مثال بالا عدد 5 را به صورت عددی (Int) با عدد '5' به صورت رشته ای (String) با عملگر === مقایسه کرده ایم، نتیجه بر خلاف آنچه در مورد عملگر == دیدیم نادرست (false) خواهد بود، به این دلیل که عملگر === برابری دو طرف رابطه را از هر لحاظ (نوع و مقدار) بررسی می کند و اگر نوع یا مقدار دو متغیر یکسان نباشد، نتیجه نادرست (false) خواهد بود.
برای مقایسه برابر نبودن دو طرف رابطه از علامت =! در PHP استفاده می کنیم:
$a = 5;
$b = 5;
($a != $b)
مقایسه بالا یعنی اگر متغیر a برابر b نباشد رابطه برقرار (true) است، اما رابطه بالا برقرار نیست و نتیجه نادرست (false) است، چرا که مقدار هر دو متغیر 5 و برابر هستند، در صورتی که ما نابرابری آنها را مقایسه کرده ایم.
نکته: علامت <> نیز در PHP برای مقایسه برابر نبودن دو طرف رابطه استفاده می شود، این حالت چندان متداول نیست اما کارکردی مشابه با علامت =! دارد.
برای مقایسه برابر نبودن دو طرف رابطه از هر جهت (نوع و مقدار) از علامت ==! استفاده می کنیم، مثال:
$a = 5;
$b = '5';
($a !== $b)
در مثال بالا عدد 5 را به صورت عددی (Int) با عدد '5' به صورت رشته ای (String) با عملگر ==! مقایسه کرده ایم، نتیجه بر خلاف آنچه در مورد عملگر =! دیدیم درست (true) خواهد بود، به این دلیل که عملگر ==! نابرابری دو طرف رابطه را از هر لحاظ (نوع و مقدار) بررسی می کند و اگر نوع یا مقدار دو متغیر یکسان نباشد، رابطه نابرابر و نتیجه درست (true) خواهد بود.
برای مقایسه کوچکتر بودن از علامت > در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 8;
($a < $b)
با توجه به مثال بالا، متغیر a از متغیر b کوچکتر است و مقایسه درست (true) خواهد بود.
برای مقایسه بزرگتر بودن از علامت < در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 8;
($a > $b)
بر این اساس رابطه بالا نادرست (false) است، چرا که مقدار متغیر a برابر با 5 و از متغیر b که مقدار آن 8 است بزرگتر نیست، بنابر این رابطه برقرار نمی باشد.
برای مقایسه کوچکتر مساوی از علامت => در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 8;
($a <= $b)
بر اساس مثال بالا، متغیر a از b کوچکتر است اما مساوی نیست، با این حال این رابطه درست (true) خواهد بود چرا که کافی است یکی از شرایط مقایسه صحیح باشد تا کل آن صحیح (true) فرض شود، به عبارتی عملگر => یعنی کوچکتر یا مساوی.
برای مقایسه بزرگتر مساوی بودن نیز از علامت =< در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 8;
($a >= $b)
با توجه به مثال بالا، متغیر a بزرگتر یا مساوی با b نیست، پس هیچ کدام از پارامترهای این مقایسه برقرار نیست و نتیجه نادرست یا false خواهد بود.

عملگرهای منطقی (Logical Operators) در PHP


عملگرهای منطقی (Logical Operators) در PHP مانند اغلب زبان های برنامه نویسی نقش مکمل را برای عملگرهای مقایسه ای دارند و نتیجه یک یا چند مقایسه را به صورت true یا false برمی گردانند، بر همین اساس در حالت true نیازی به استفاده از علامت خاصی در Syntax نیست اما برای حالت false از علامت ! (نباشد) در ابتدای مقایسه استفاده می کنیم، برای مقایسه چندگانه نیز علامت && (و) و علامت || (یا) کاربرد دارند، همچنین PHP از عبارات دستوری متنی (and، or و xor) نیز پشتیبانی می کند، مثال های زیر به درک موضوع کمک خواهند کرد.
($a > 12)
عبارت بالا یعنی اگر متغیر a بزرگتر از 12 باشد رابطه برقرار و مقدار true برگردانده می شود، در این حالت نیازی به استفاده از علامت خاصی نیست، در واقع عملگر منطقی در این مقایسه استفاده نشده است!
!($a > 12)
عبارت بالا یعنی اگر متغیر a بزرگتر از 12 نباشد رابطه برقرار و مقدار true برگردانده می شود، همان طور که مشخص است در این مقایسه از علامت منطقی ! استفاده شده است.
($a > 12 && $a < 20)

($a > 12 and $a < 20)
عبارت بالا یعنی اگر متغیر a بزرگتر از 12 و در عین حال کوچکتر از 20 باشد رابطه برقرار و مقدار true برگردانده می شود، در این رابطه برای بررسی چندگانه از علامت && و عبارت دستوری and استفاده کرده ایم و در صورتی کل این رابطه برقرار و true است که نتیجه هر دو مقایسه true باشد، تنها تفاوت علامت && و عبارت دستوری and حالت تقدم (Precedence) آنها در مفسر PHP است که علامت && نسبت به and مقدم است، این تفاوت زمانی مشخص می شود که عملگرهای منطقی را با عملگر اختصاص دهنده = در یک قسمت استفاده کنیم، به طور مثال خروجی متغیر a در مثال زیر در حالت اول برابر با false و در حالت دوم برابر با true خواهد بود و دلیل این تفاوت تقدم و تاخر پردازش عملگرها نسبت به هم در مفسر PHP است (علامت && نسبت به = مقدم و علامت = نسبت به and مقدم است):
<?php
$a = null;
$b = true;
$c = false;

$a = $b && $c;
var_dump($a);
$a = $b and $c;
var_dump($a);
?>
نتیجه نمونه کد بالا به صورت زیر خواهد بود.
boolean false
boolean true
در حالت اول ابتدا مقایسه با عملگر && صورت گرفته و سپس مقدار برگردانده شده با عملگر = به متغیر a نسبت داده می شود اما در حالت دوم ابتدا مقدار a به عنوان خروجی برگردانده شده و سپس مقایسه با عملگر and صورت می گیرد که در خروجی تاثیری ندارد (توجه کنیم در حالت دوم نیز در نهایت مقدار متغیر a برابر با false خواهد بود و اگر در قسمت های دیگر برنامه از آن استفاده کنیم به صورت flase اثرگذار است، در اینجا صرفا بحث تقدم و تاخر عملگرها است و اینکه کدام یک ابتدا پردازش و اعمال می شوند)، در ادامه به بررسی سایر عملگرهای منطقی می پردازیم.
($a > 12 || $a < 20)

($a > 12 or $a < 20)
عبارت بالا یعنی اگر متغیر a بزرگتر از 12 یا کوچکتر از 20 باشد رابطه برقرار و مقدار true برگردانده می شود، در این رابطه برای بررسی چندگانه از علامت || و عبارت دستوری or استفاده کرده ایم و در صورتی کل این رابطه برقرار و true است که نتیجه یکی از دو مقایسه true باشد، مانند علامت && و and تنها تفاوت علامت || و عبارت دستوری or حالت تقدم پردازش آنها در مفسر PHP است که علامت || نسبت به or مقدم است، در مجموع استفاده از علامت && و || شیوه معمول و توصیه شده است و برای پرهیز از بروز مشکلات پیش بینی نشده بهتر است از این عملگرها استفاده کنیم.
آخرین عملگر منطقی PHP که با آن آشنا خواهیم شد عبارت دستوری xor است، این عملگر زمانی مقدار true برمی گرداند که فقط یکی از طرفین مقایسه true باشد، به عبارت دیگر در صورتی که هر دو طرف مقایسه true یا false باشند عملگر xor مقدار false را به عنوان نتیجه برمی گرداند.
<?php
$b = true;
$c = false;
$a = $b xor $c;
var_dump($a);
?>
از آنجایی که مقدار متغیر فرضی b به صورت true و مقدار متغیر c به صورت false است، رابطه برقرار بوده و نتیجه مقایسه بالا به صورت زیر خواهد بود.
boolean true
نکته: برای نمایش ساختار پارامترها از تابع var_dump در PHP استفاده می کنیم، این تابع خصوصیات پارامترها را از نظر نوع (Type) و مقدار (Value) در خروجی چاپ می کند و شیوه مرسوم در خطایابی برنامه ها حین کدنویسی است.
sectionدسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
» توابع کار با آرایه در PHP - بخش اول
» دستور switch و case در PHP
» تعریف و استفاده از متغیر (Variable) در PHP
» حلقه for، foreach و while در PHP
» دستورات شرطی (Conditional Statements) در PHP
commentنظرات (۳۰ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: محمد
۱۸:۰۱ ۱۳۹۴/۱۰/۱۹
خدایی این راه درست بود؟؟؟
منم دقیقا همین کارو شما رو می کردم ولی احساس کردم غلطه
دمتون گرم بابا
دم خودمم گرم
حالا وقتشه یکم به خودم اعتماد داشته باشم
ممنونم
نویسنده: armin
۱۴:۵۸ ۱۳۹۴/۱۱/۱۵
با سلام و خسته نباشید
یه اسکریپت دارم میخاستم با شرط هایی که روی تاریخ ها میزارم یه عملیاتی را انجام بده اما داخل جمع و تفریق تاریخ ها به شمسی مشکل دارم ممنون میشم یه راهنمایی کنید.
پاسخ: 
این موضوع نیازمند آشنایی با بحث تاریخ و زمان در PHP است، در این صورت می توانید با کلاس های آماده ای مانند JDF تاریخ شمسی را ابتدا به میلادی تبدیل، سپس عملیات مورد نظر را انجام و در نهایت مجدد به حالت شمسی برگردانید، لطفا عبارت "تبدیل تاریخ میلادی، شمسی با JDF" را در وب جستجو کنید، پس از ورود به مطلبی که در این زمینه در سایت وجود دارد، آن را به طور کامل و به همراه پاسخ های ارائه شده در یادداشت ها (به صورت اجمالی و مواردی که شامل نمونه کد هستند) مطالعه کنید، در چند مورد راه حل هایی مناسب برای هدف شما ارائه شده!
نویسنده: بهنام
۲۳:۴۱ ۱۳۹۴/۱۱/۱۷
سلام استاد عزیز
عملکرد تابع pow را به طور کدنویسی توضیح دهید چگونه کار میکنه چطور میتوان توان یک عدد را با php محاسبه کرد
به طور مثال از این روش رفتم
$n = 10;
$t = 3;
$n = $n * $n * $n;
حالا چگونه میشه بفهمان که اگر متغیر t = 5 بود n را پنج بار در خودش ضرب کند؟
پاسخ: 
pow مخفف power یا همان توان در ریاضی است که یک عدد را به توان می رساند، مثال:
echo pow(2, 5);
دقیقا مشابه کد زیر:
<?php
$num = 2;
$power = 5;
$result = $num;
for($i = 1; $i < $power; $i++){
$result = $result * $num;
}
echo $result;
//echo pow(2, 5);
?>
نویسنده: بهنام
۱۴:۰۴ ۱۳۹۴/۱۱/۱۹
بی نهایت تشکر میکنم
واقعا ممنونم از جواب شما
خیلی ایده های جالبی از این روش شما یاد گرفتم ممنونم
نویسنده: 😐 محمد 😐
۱۱:۵۱ ۱۳۹۴/۱۱/۲۰
سلام
من یه کدی نوشتم برای نمایش نتایج نظرسنجی تعداد رای ها از قبل روی کاغذی یادداشت کردم و خواستم این رو به کد تبدیل کنم کد رو تا یه جایی توشتم فقط مونده درصدگیری از تعداد
ببینید :
<?php
function name($city){
switch($city)
{
case 0: $namecity='تهران'; break;
case 1: $namecity='مشهد'; break;
case 2: $namecity='اصفهان'; break;
case 3: $namecity='تبریز'; break;
case 4: $namecity='گیلان'; break;
default:$namecity='-';
}
return $namecity;
};
# (0) =Tehran | (1) = mashhad | (2) = esfehan | (3) = tabriz | (4) = gilan
#------(0).(1).(2).(3).(4)
$date='21.17.25.41.20';
$explodedate=explode('.',$date);
$all = 0;
foreach($explodedate as $key => $value){
$all += $value;
}
$percent = $all / 100;
$datewhile=0;
while($explodedate[$datewhile])
{
$per = round($explodedate[$datewhile] / $percent);
echo name($datewhile)."$per درصد";
echo '<br>';
$datewhile++;
}
?>
به کد نگاهی بندازید متوجه سوال من میشید
متغیر per می خواد نشون بده دقیقا هر کدوم از شهر ها چند درصد رای دارند
میشه راهنمایی کنید؟
ممنون
پاسخ: 
کد بالا ویرایش شد!
نویسنده: 😐 محمد 😐
۲۲:۵۳ ۱۳۹۴/۱۱/۲۰
سلام
خیلی خیلی ممنونم از شما
شما که نه درخواست پول کردید نه منت گذاشتید سر ما
بدون هیچ درخواستی پاسخ منو دادید تنها کاری که می تونم براتون انجام بدم دعاست الهی همیشه عاقبت بخیر بشید و همیشه شاد باشید هیچ وقت غم وجودتونو نگیره
آمین.
نویسنده: Matori73
۱۹:۴۳ ۱۳۹۵/۰۳/۰۷
درود !
در سایت برای هر پست میتونم کامنت بذارم و کاربر میتونه کامنت رو هم لایک کنه..
حالا چطور میتونم کامنتی که بیشترین تعداد لایک رو داره، نشون بدم !؟
به ازای هر بار لایک شدن کامنت، یک سطر به دیتابیس اظافه میشه، ما باید کل این سطرها رو بشماریم و بعد مقایسه کنیم و ببینیم بیشترین لایک ها برای کدوم پست بوده ..
ممنون میشم یک صورت کلی از دستوراتی که لازمه استفاده بشن رو بگید !؟
تشکر ..
پاسخ: 
ایجاد سیستم لایک به این صورت فشار زیادی به دیتابیس و برنامه شما تحمیل خواهد کرد که بهینه نیست، راه حل بهتر این است که برای لایک ها یک جدول جداگنه داشته باشید که شماره id هر پست به همراه تعداد لایک آن در یک ردیف باشند، با هر لایک مقدار موجود برای آن پست را افزایش دهید، همچنین برای ارائه گزارش های آماری این حالت مناسبتر است، قاعدتا برای انجام این موارد باید با MySQL و دستورات آن مانند تابع COUNT همچنین ایجاد پرس و جو با SELECT و... آشنایی داشته باشید.
نویسنده: متین
۱۹:۲۹ ۱۳۹۵/۰۶/۱۹
آقا دمتون گرم
خیلی از مشکلات برنامه نویسی پی اچ پی من با توضیحات شما رفع شده
از تلاشتون متشکرم
نویسنده: صادق
۱۹:۱۰ ۱۳۹۶/۰۷/۲۵
سلام
برای بررسی برابر بودن دو مقدار، که هر دو با یک یا چند تا صفر آغاز میشن چه کار باید کنیم مثلا 001 مساوی 01 نیست.
پاسخ: 
در صورتی که مقدار به صورت عددی (Int) باشد، صفرها در ابتدا به حساب نمی آیند، اگر هم مقدارها به صورت رشته باشد برابر نخواهد بود (از علامت === برای مقایسه استفاده کنید) و این طبیعی است:
<?php
$num_1 = 001;
$num_2 = 01;
if($num_1 === $num_2){
echo 1;
} else{
echo 0;
}
$str_1 = '001';
$str_2 = '01';
if($str_1 === $str_2){
echo 1;
} else{
echo 0;
}
?>
نویسنده: صادق
۱۱:۳۷ ۱۳۹۶/۰۷/۲۶
سلام
ممنونم از جوابتون. در ادامه سوالم، یک فیلد داریم که میاد یک مقدار از کاربر میگیره و اونا با یک مقدار تو دیتابیس مقایسه میکنه. حالا چه جوری به برنامه بگیم مقداری که کاربر وارد کرده رشته هستش تا نتیجه مقایسه درست از آب در بیاد
پاسخ: 
به یکی از روش های زیر می توانید متغیر را در PHP با مقادیر رشته ای تعریف کنید:
<?php
$var = (string) @$_POST['input'];
$var = strval(@$_POST['input']);
?>
نویسنده: میثم
۲۳:۳۷ ۱۳۹۷/۰۵/۰۲
سلام
دوستان من میخوام یدونه اعداد 10 رقمی رو میخوام چک بکنم که این 10 رقم تکراری نباشه
پاسخ: 
با توجه به توضیحات می توانید از نمونه کد و تابع زیر استفاده کنید:
<?php
$num = '1234567890';

function checkRepeat($num){
$array_num = str_split($num, 1);
$array_check = array();

foreach($array_num as $key => $value){
if(in_array($value, $array_check)){
return false;
}

$array_check[] = $value;
}

return true;
}

if(checkRepeat($num)){
echo 'OK!';
} else{
echo 'Error!';
}
?>
نکته: اگر اعداد مد نظرتان با 0 شروع می شوند یا چنین احتمالی در برنامه وجود دارد، مقدار باید به صورت رشته ای (String) ذخیره و در کد استفاده شود (0 در چنین مواردی در PHP نادیده گرفته شده و حذف می شود).
نویسنده: negin
۲۳:۲۲ ۱۳۹۷/۰۸/۲۰
سلام میخوام برنامه ای بنوسیم در php که مثلا بین اعداد 17 و 8- و 0 و 7- و 10 کوچک ترین عدد چاپ بشه با استفاده از آرایه نوشته میشه؟
پاسخ: 
تفاوتی نمی کند، برای پیدا کردن کوچکترین مقدار عددی می توانید از تابع min در PHP استفاده کنید، مثال:
<?php
$numbers = array(17, -8, 0, -7, 10);
$min = min($numbers);
echo $min;
$min = min(17, -8, 0, -7, 10);
echo $min;
?>
نویسنده: mohammad
۱۴:۵۲ ۱۳۹۷/۱۲/۱۶
سلام و با تشکر
من میخوام از یک ارایه یک مقدار رو خارج کنم و شماره ارایه رو برای من چاپ کنه
به طور مثال من میخواهم از یک ارایه 3 عضوی که اعضای ان
css,  phpcake, 12_php
هستند بیاید و انهایی که درونشان کلمه php به کار رفته را جدا کند و اعدادشان را به من نشاند دهد و مثلا بگوید که شماره 2 و 3 دورنشان کلمه php به کار رفته است.
اگر میتوانید مرا راهنمایی کنید
نمونه
نمایش شماره حروف apple
ورودی
11_apple
apple34
orange
خروجی
1, 2
اینگونه باشد
پاسخ: 
نمونه تابع زیر برای بررسی و شمارش الگوی مد نظر در یک آرایه کاربرد دارد:
<?php
$array = array('11_apple', 'apple34', 'orange');
$pattern = '/apple/iu';

function checkMyArray($array, $pattern){
$loop = 1;
$found = null;

foreach($array as $key => $value){
if(preg_match($pattern, $value)){
$found .= $loop . ', ';
$loop++;
}
}

$found = substr(trim($found), 0, -1);

return $found;
}

echo checkMyArray($array, $pattern);
?>
نویسنده: Hasti
۲۰:۲۵ ۱۳۹۹/۰۱/۲۹
سلام وقتتون بخير
من يك آرايه 1 تا 10 ايجاد كردم حالا ميخوام تك تك عناصر آرايه به توان 2 برسونم بايد چه كار كنم؟
پاسخ: 
برای به توان رساندن عناصر آرایه می توانید از تابع pow در PHP بر اساس نمونه الگوی زیر استفاده کنید:
<?php
$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
for($i = 0; $i < count($array); $i++){
$array[$i] = pow($array[$i], 2);
}
print_r($array);
?>
نویسنده: الناز
۱۱:۳۱ ۱۳۹۹/۰۷/۰۹
سلام وقتتون بخیر. چطور میشه برنامه ای رو در php نوشت که کدملی رو تبدیل به شماره دانشجویی کنه اگه برام بنویسید ممنون میشم.
پاسخ: 
سوالتان مبهم و کلی است!، لطفا یک نمونه کد ملی و شماره دانشجویی مد نظر مبتنی بر آن را درج کنید تا امکان راهنمایی وجود داشته باشد.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- موارد غیرمرتبط با مباحث آموزش ها را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ مختصر داده خواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- از درج عناوین تبلیغاتی در فیلدها خودداری کنید، در صورتی که یادداشت تبلیغاتی تشخیص داده شود حذف خواهد شد.
- تمام یادداشت ها بررسی و زمانی جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد خودداری کنید.





4 × 6
 refresh

آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
form عبدالمالت ریالی
در:
سلام علیک میشه از چند فونت در یک صفحه html استفاده کرد.؟
۱۳۹۹/۰۸/۰۱

form مبینا
در:
سلام من برنامه ای میخواستم که داخل ارایه 5 رنگ قرار گرفته باشه. و با استفاده از حلقه for این یک متنو به اون پنج...
۱۳۹۹/۰۸/۰۱

form mohadeseh
در:
ممنون از راهنماییتون مشکلم حل شد
۱۳۹۹/۰۷/۲۸

form محمد
در:
سلام. یک کد نوشته ام بدین صورت: وقتی صفحه باز شده یک پنجره پیام خالی با یک ok باز شده هر چه ok را...
۱۳۹۹/۰۷/۲۸

form فایز پور جهانبخشی
در:
سلام اگر بخواهیم برنامه ای که داخل متلب نوشتیم تا یک ثانیه اجرا شود و بعد از ثانیه اول در حالت خطا که...
۱۳۹۹/۰۷/۲۸

form mohadeseh
در:
الان کد من که توی تگ <head> گزاشتم میخواستم بدونم ایا امکانش هست که توی تگ link که ایکون رو باهاش اوردم بتونم...
۱۳۹۹/۰۷/۲۷

form mohadeseh
در:
سلام ببخشید لطفا راهنمایی کنید که چجوری title برای favicon در html بزارم؟ جوری که وقتی موس روی icon قرار بگیره متن...
۱۳۹۹/۰۷/۲۷

form ryomaechizen
در:
سلام. اگه حافظه وب پر بشه و مجبورا عکسا کپی باشن چطور باید مشکل بارگزاریشون حل بشه؟
۱۳۹۹/۰۷/۲۶

form رونا
در:
پرونده فرستاده شده نمی‌تواند به wp-content/uploads/2020/10 برود. سلام این ارور برای چی رخ می ده
۱۳۹۹/۰۷/۲۵

form reza
در:
سلام خوبید انشاالله؟ خواستم بدونم این نوار ابزار رو چطور باید اونایی رو دوست دارم بزارم سمت راست وبلاگم. هر چی کد و ......
۱۳۹۹/۰۷/۲۴

form سینا
در:
چگونه میتوانیم با استفاده از HTML فرمول شیمیایی مواد را بنویسیم؟ با عدد اتمی، جرمی و بار اتمی
۱۳۹۹/۰۷/۲۱

form فاطمه
در:
سلام ممنونم... خیلی ساده و روون توضیح دادین.. اونقدر که تشویق شدم محتوای یه فایل تکس رو با ایجکس درون یه div بیارم ولی...
۱۳۹۹/۰۷/۲۱

form امیرحسین
در:
خب متوجه شدم. که باید خط اول عدد فانکشن رو تغییر بدم. بسته به تعداد آرایه یا هر عدد دیگه تغییر بدم جوابمو...
۱۳۹۹/۰۷/۲۱

form امیرحسین
در:
عالی بود. خیلی ممنونم. ولی هر چند کلمه داخل آرایه داشته باشم به همون میزان خروجی گرفته میشه. من اگه 10 کلمه در آرایه داشته...
۱۳۹۹/۰۷/۲۱

form سعادتی
در:
سلام کاش روش برطرف کردن این بهم ریختگی رو هم توضیح میدادید. ممنون
۱۳۹۹/۰۷/۲۰
form امیرحسین
در:
موفق شدم اینو پیدا کنم. ولی میخوام کلمات تکراری داخلشون نباشه. مثال AAA فقط یک بار در اون خط وجود داشته باشه.
۱۳۹۹/۰۷/۲۰
form امیرحسین
در:
سلام. نه محدودیت زمانی وجود نداره.
۱۳۹۹/۰۷/۲۰
form امیرحسین
در:
سلام خسته نباشید. میخوام از این تابع برای بدست آوردن لیست های متفاوت استفاده کنم. مثلا یه آرایه داشته باشم. امیدوارم کمکم...
۱۳۹۹/۰۷/۲۰
form ابوالفضل
در:
سلام وقتتون بخیر من میخوام یه افزونه برای مرورگر کروم طراحی کنم و میخوام یه متنی رو هر سری از سایت دریافت کنه و...
۱۳۹۹/۰۷/۲۰
form mahdi
در:
سلام چطور می تونم از ip خارجی استفاده کنم؟ برای دریافت لانچر میخام. مرسی
۱۳۹۹/۰۷/۱۹
form احسان عباسی
در:
با سلام و تشکر از سایت خوبتون من یه کد تعریف کردم که در بورس ایران سهم مدنظرمو بیاره .. میخواستم ببینم امکانش هست دستوری...
۱۳۹۹/۰۷/۱۷
form شبنم
در:
سلام وقتتون بخیر، ببخشید از کلمه event یا e دقیقا چه زمانی توی فانکشن استفاده میکنیم؟
۱۳۹۹/۰۷/۱۷
form احمد
در:
با عرض سلام مجدد ساختار کلی دستورم به این صورت هست. بعد از حلقه وایل اون دیو کلاس 1 و 2 و 3 میخواهم...
۱۳۹۹/۰۷/۱۶
form احمد
در:
با عرض سلام ببخشید چطوری میتونم یه قسمت از تگ ها رو داخل حلقه وایل رد کنم دوباره تگ های بعدی داخل حلقه قرار بگیرن...
۱۳۹۹/۰۷/۱۶
form ابوالفضل
در:
سلام واقعا من خیلی گشتم تا بتونم این آموزش رو پیدا کنم چون واقعا نمی دونستم چی بنویسم تا یک رتبه بندی برای نتایج جستجو...
۱۳۹۹/۰۷/۱۵
form mahtab
در:
سلام وقتتون بخیر ببخشید میشه بفرمایید چجوری کلیپ رو بزاریم وبلاگ ؟؟ بی زحمت کامل بفرمایین ممنون و متشکر
۱۳۹۹/۰۷/۱۴
form Saeid Azari
در:
سلام ببخشید اگه امکانش هست سوال منو جواب بدید یکم گیج شدم...من یک کد html دارم که باید یک سایت درست کنم و ان را...
۱۳۹۹/۰۷/۱۳
form ابوالفضل
در:
سلام یک سوال دارم چجوری یک متنی که درون تگ td هست و بعد تگ br هست (تگ br درون تگ td است) رو...
۱۳۹۹/۰۷/۱۳
form parnian
در:
با سلام با توجه به این که این مطلب در سال 91 نوشته شده ایا تغیری هم کرده؟ مثلا استفاده و مهم بودن تگ های...
۱۳۹۹/۰۷/۱۳
form fahimeh
در:
سلام من دارم پروژه واسه دانشگاه مینویسم طراحی سایتو کردم برای کار با پایگاه داده دستور insert و delete کار میکنه ولی...
۱۳۹۹/۰۷/۱۲
form امین
در:
با عرض سلام ببخشید یه فرم دارم اخر فرمم یه دکمه دارم میخواستم بدونم چطوری باید بعد از کلیک کردن دکمه به صفحه دیگه انتقال...
۱۳۹۹/۰۷/۱۱
form محسن
در:
سلام من از فرم ساز گرویتی استفاده میکنم آیا امکان استفاده همچین چیزی رو میتونم داخلش داشته باشم آیا کدی داره که در قسمت...
۱۳۹۹/۰۷/۱۱
form مالکی
در:
چرا وبلاگم بالا نمی یاد
۱۳۹۹/۰۷/۰۹
form احمد
در:
با عرض سلام مجدد و خسته نباشید ببخشید نمونه کد رو اگر امکانش هست نگاه کنید که چطوری این متغییری رو که بدست اوردم در...
۱۳۹۹/۰۷/۰۹
form الناز
در:
سلام وقتتون بخیر. چطور میشه برنامه ای رو در php نوشت که کدملی رو تبدیل به شماره دانشجویی کنه اگه برام بنویسید ممنون میشم.
۱۳۹۹/۰۷/۰۹
form محمد
در:
سلام من میخواستم بدونم چه طوری میشه بدون اینکه از کاربر بپرسی که میخواهد از حساب خروج پیدا کند خود سایت بفهمد که کاربر از...
۱۳۹۹/۰۷/۰۹
form احمد
در:
با سلام ببخشید چطوری باید در جکوری از یک متغییر در صفحات دیگه استفاده کنم مثال دو عدد را باهم جمع کردم و ریختم داخل...
۱۳۹۹/۰۷/۰۹
form مهسا
در:
سلام و خسته نباشید مشکلی برای وبلاگ من پیش اومده موقع ورود بهم پیام میده وبلاگ داره بروز رسانی میشه و بعدا وارد وبلاگ شوید...
۱۳۹۹/۰۷/۰۸
form Moshtagh
در:
سلام و خسته نباشید بنده چند روزه که وقتی اطلاعات ورود به وبلاگم رو وارد تیترها و کلیک میکنم با چنین پاسخی مواجه میشم...
۱۳۹۹/۰۷/۰۸
form mahtab
در:
سلام خسته نباشین ببخشید چرا بلاگفا باز نمیکنه ؟؟؟ میرم مدیریت وبلاگ نه تو بروز شده ها وبی هستم نه هم که...
۱۳۹۹/۰۷/۰۷
form جواد
در:
سلام و عرض ادب. سایت من هک شده و یک کد ریدایرکت تو دیتابیس هاستم بارگزاری شده که آخر همه پست ها تو...
۱۳۹۹/۰۷/۰۷
  در انتظار بررسی: ۰
 پاسخگویی به سوالات ممکن است تا 24 ساعت زمان ببرد.