عملگرها در PHP

دسته بندی: آموزش
زمان مطالعه: ۲ دقیقه
۰۱ مرداد ۱۳۹۳

در سومین جلسه از دوره ی مجازی PHP در مورد  انواع مختلف عملگرها در زبان PHP صحبت می کنیم . عملگرها عملیاتی هستند که می توان آنها را بر روی متغیرها و داده ها انجام داد .

:: لیست مطالبی که در این جلسه گفته میشن به این شکل هست :

فصل 4 : عملگرها در PHP : انجام اعمال مختلف بر روي داده ها و متغيرها

  • عملگر چيست؟
  • انواع عملگرها در زبان PHP
  • عملگرهاي رياضي و محاسباتي
  • عملگرهاي رشته
  • عملگرهاي مقايسه اي
  • عملگرهاي منطقي
  • عملگرهاي بيتي
  • عملگرهاي انتساب
  • عملگرهاي خاص : ++ و –
  • بررسي عملگرها با مثال هاي مختلف
  • اوليت اعمال عملگرهاي مختلف
  • تمرين
نکته :

در این ویدیو و در قسمتی که در مورد عملیات بیتی صحبت می کنیم، مقادیر اعداد 10 و 11 را در مبنای 2 به اشتباه نوشتیم که در خود ویدیو و فایل های این جلسه به این مورد اشاره شده است . این مورد رو ذکر کردم که دچار سردرگمی نشید و بابت اشتباه بوجود اومده عذرخواهی می کنم. مقادیر صحیح این دو عدد در فایل های این جلسه آورده شده .

:: توجه

این مطلب یک جلسه از آموزش PHP می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش PHP

نویسنده
بیش از 15 سال هست که برنامه نویسی می کنم و از بین همه زبون هایی که کار کردم جاوا، اسمبلی و php رو دوست دارم. دانشجوی دکترای نرم افزارم و توی دانشگاه روی پردازش بیگ دیتا و پردازش موازی کار کردم و عاشق چالش از هر نوعیش هستم! سون لرن مثل بچه منه که 12 سال براش وقت گذاشتم، اینجا همه تلاش می کنیم از شروع یادگیری تا ورود به بازر کار حوزه برنامه نویسی و IT همراهتون باشیم.

جلسات دوره

نظرات کاربران

مصطفی موحدی

گفتمان معادل فارسی Discourse هست. من چطور می‌تونم روی ادبیات «گفتمان» تجدیدنظر کنم؟ اگه منظورتون گفت‌وگو هست که به‌نظرم شما هم یه تجدیدنظر در انتخاب کلمات انجام بدید. درضمن شما مخاطب من نبودید که در شما حس خوبی القا نشده. اگر کامنت من رو مجددا بخونید و اینکه ایشون استاد شما هستن و من یه مخاطب عادی کامنت‌گذار رو از ذهن‌تون پاک کنید … ایشون گفتن زمانی جواب ۱ یا True هست که فقط یکی از عملوندها ۱ باشه. این جوابی هم که گذاشتید، تذکر من رو تصدیق می‌کنه. در خط چهارم، ۳ عملوند ۱ داریم ولی جواب باز هم یک شده درصورتیکه مطابق گفته‌های جناب آوند، باید صفر می‌شد. یک‌بار دیگه کامنت من و فایل این جلسه رو ببینید و با ریزالت‌هایی که منتشر کردید، تطبیق بدید

مصطفی موحدی

پیرامون عملگر + در آرایه‌ها هم اشتباه توضیح دادید. این عملگر اجتماع ایندکس‌ها نیست. توضیح دقیق‌ترش رو در مستندات پی‌اچ‌پی اینطور ذکر کرده:

https://php.net/manual/en/language.operators.array.php
[The + operator returns the right-hand array appended to the left-hand array; for keys that exist in both arrays, the elements from the left-hand array will be used, and the matching elements from the right-hand array will be ignored.]

اجتماع مقادیر با اولویت آرایه‌ی اول … در ایندکس‌های برابر مقدار آرایه‌ی اول قرار می‌گیرد (چون در اولویت است) و در ایندکس‌هایی نابرابری که در آرایه‌ی اول وجود نداشته باشد مقادیر آرایه‌ی دوم قرار می‌گیرد.

عباس رحمتی

سلام دوست عزیز..
نیاز دیدم جواب شما رو بدم..
بهتر نیست یکم و فقط کمی روی ادبیات گفتمانتون تجدید نظر کنید؟! حس خوبی به مخاطب القا نمیکنه
ببینید همونطور که دکتر آوند فرمودند عملگر xor زمانی یک یا true بر میگردونه که یک طرف false و طرف دیگه true باشه..
و اما مراحل کامپایل کد شما(البته میدونید که اولویت این عملگر از چپ به راسته) :

var_dump(1 XOR 0 );// 1 or true
var_dump(1 XOR 0 XOR 1 ); // 0 or false
var_dump(1 XOR 0 XOR 1 XOR 0 ); // 0 or false
var_dump(1 XOR 0 XOR 1 XOR 0 XOR 1); // 1 or true

مصطفی موحدی

از جناب آوند تعجب می‌کنم که دانشجوی مقطع دکترای کامپیوتر هستند و عملگر XOR رو اینطور توضیح می‌دن. عملگر XOR درواقع زمانی ۱ می‌شه که عملوندها مقدار برابر نداشته باشن نه اینکه فقط یکی از عملوندها ۱ باشن. این شیوه‌ای که گفتید شاید در دو عملوند صحیح باشه ولی زمانیکه عملوندها سه‌تایی یا بیشتر باشن، چطور؟ مثلا جواب این ورودی در XOR چه خواهد بود:

https://en.wikipedia.org/wiki/XOR_gate

1 XOR 0 XOR 1 XOR 0 XOR 1
محمدامین عطائی

سلام ممنون از دوره ی خوبتون . فقط یکم کیفیت صدا جالب نیست که برای من به شخصه قابل چشم پوشی هست . یک سوال داشتم خدمتتون :
من وقتی وارد wamp میشم (localhost) و میخوام بین پوشه هایی که ساختم حرکت کنم در واقع اینجوری عمل میکنه :
http://7l%20php/
و نمیفهمه که باید localhost رو قبلش بزاره .. من باید هر دفعه دستی این عبارت رو اول url وارد کنم . میشه راهکاری بهم بدین که این کار به صورت اتوماتیک انجام بشه؟ ممنون

Seyed Reza Bazyar

عدد ۱۰ میشه 00001010 اما به اشتباه گفته 00000110 که معادل ۶ هست…
به همه دانشجویان پیشنهاد میکنم از لینک زیر برای سهولت و اطمینان در کار استفاده کنند. چون به هر حال هر کسی ممکنه در این موارد اشتباه کنه
http://www.binary-code.org/binary/8bit/00000110

جا داره یه تشکر هم از استاد آوند کنم. چون آموزش های php مختلفی در اینترنت تهیه کردم و این تنها آموزشی هست که اعداد باینری رو هم به ما یاد میده

علی فنایی

جناب آقای آوند، از پاسخ به سوالات قبلی ممنونم. دلایل شما هم بنظرم کاملا منظقی بود. من واقعا از نحوه ضبط این ویدیوهای شما که با این همه دقت و زحمت تهیه میشه لذت می برم و اصلا نمی تونم تشکر نکنم. از اینکه بسیار با صبر و حوصله عملگرها رو توضیح دادید و مثال زدید بسیار استفاده کردم. فقط برای من دو مورد در خصوص جمع مقادیر دو آرایه و ترتیب عملگرها نا مفهوم بود.
در مورد آرایه ها، نتیجه vardum برای جمع متغیر $a با مقادیر {1,2,3} با متغیر $b با مقادیر {a,b,c}رو بصورت زیر نشون میداد که معنیش مبهم بود:
[0]=> (int(1
[1]=> (int(2
[2]=> (int(3
در مورد ترتیب اجرای عملگرها هم متاسفانه بنظر میرسه هم چپ به راست درگیر هست و هم اولویت عملگرهای توان، ضرب و تقسیم. به طوریکه درصورت عدم استفاده از پرانتر برای تعیین اولویت اجرا، متاسفانه پاسخ واقعا با یک استاندارد مشخص قابل حدس نیست. مثلا در vardump عبارت زیر نتیجه، 43- است. این در شرایطی است که عملگر ضرب و حتی جمع، مقدم بر توان شده است:
result= 16-6*10+6/2^2
——>
result=16-60+6/2^2
result=-44+6/2^2
result=-44+6/4
result=-44+1.5
result=-42.5 که بصورت عدد صحیح 43- نمایش داده میشود.
ممنون میشم در صورتیکه در خصوص این دو مورد توضیح بیشتری بفرمایید. با سپاس فراوان.
* ضمنا رایت تو لفت برای بخش ‘نظرات’ سایت وجود ندارد. قسمت کدهای php و Html هم ظاهرا باکسی در محیط ارسال نظر نمایش نمیداد. صورتیکه کدی نیاز به درج باشد همه راست چین میشود و متن بهم میریزد. اگر تسهیلاتی برای کاربران در خصوص این موضوع اندیشیده شود مزید سپاس است. با احترام و سپاس پیشاپیش/

لقمان آوند

سلام
مورد اول رو متوجه نشدم. کدتون رو برام بفرستید ببینم.
مورد دوم هم یه اشتباه ریز دارید! علامت ^ که توان نیست! این مورد عملگر XOR هست توی php و برای توان باید از تابع pow استفاده کنید. به این شکل :
16-6*10+6/pow(2,2);

mehdi karimi

سلام خدمت اساتید
من ومپ رو نصب کردم و پورت رو هم چون مشکل داشت عوض کردم مثلا گذاشتم 8080
حالا هر سری روی localhost کلیک میکنم و آدرس باز میشه باید دستی آخرش :8080 اضافه کنم
میخواستم ببینم چه جوری میتونم از تو تنظیمات کاری کنم که وقتی همیشه روی لوکالهاست کلیک میکنم دیگه مستقیما localhost:8080 باز بشه واسم ؟؟؟

لقمان آوند

سلام
برو به مسیر c:/wamp/wampmanager.tpl و هر جا http://localhost دیدی اون به http://localhost:8080 تغیر بده و ذخیره کن. ومپ رو ببند و دوباره باز کن. قبل از انجام این کار از فایل مذکور یه کپی/بکاپ بگیر.

iman12

سلام آقای آوند شما در این ویدیو گفتید که عملگر ==! در صورتی مقدار true میده که 2 متغیر هم جنس نباشند “و” مقدارشون مساوی نباشه اما توی اسلاید نوشته بود or یعنی آیا مقدار وقتی ترو میشه که یکی از این 2 حالت درست باشه و یا وقتی که هر دو حالت درست باشه و مقدار و جنسشون برابر نباشه؟

لقمان آوند

سلام
این اپراتور فقط زمانی false بر میگردونه که هر دو عملوند از لحاظ مقدار و نوع یکسان و برابر باشند. در بقیه موارد true بر می گردونه . یعنی یکی از موارد مقدار یا تایپ هم نا برابر باشه true برگردونده میشه

شایان مرادی

سلام خسته نباشید
من یه سوال برام پیش اومد.
داخل قسمت بیت ها شما نات 10 رو حساب کردید و این درومد : 11111001
(درواقع چون 10 میشه 00001010 و به دلیل اشتباه تایپی نوشتید 00000110 ، لذا نات 10 میشه : 11110101)
و وقتی داخل پی اچ پی استورم وارد کردید :

 var_dump(~10)

خروجی -11 شد. در حالی که من انتظار داشتم جواب به این شکل شه :

 2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^1 =2+8+16+32+64+128 = 250 !

حالا چیزی که از اختلاف جواب ها ، بیشتر برام عجیبه اینه که چجوری پی اچ پی ، جواب منفی چاپ کرده! چون من هرجور حساب میکنم جواب منفی ممکن نیست در بیاد.

و یه چیز دیگه. با توجه به روش کدگذاری 0و1 ، اگر ما در حداکثرترین حالت یعنی 11111111 رو چاپ کنیم ، جواب 255 در میاد. اگر عدد ما بیشتر ازین عدد باشه به صورت 0 و 1 چطوری نوشته میشه؟ مثلا عدد 256 یا 1000 چطوری در میاد؟

ممنون از زحمات فراوان شما

لقمان آوند

سلام
تو اعداد باینری اگر سمت چپ ترین بیت 1 باشه و محاسبه علامتدار باشه نشونه منفی بودن عدد هست. عدد بدست اومده هم به همین دلیل معادل -11 هست .

dariosh babaii

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

لقمان آوند

سلام
زبان php یک زبان مفسری هست و به جای کامپایل کل کد، خط به خط تفسیر (interprete) میشه و شما فایل کامپایل شده نداری که محتویاتش رو ببینی داریوش جان …

لقمان آوند

سلام
نه اینطور نیست!
اون عملگر (!==) میگه اگه یکی از موارد یا هر دو (مقدار یا نوع) نابرابر بود دو عملوند نابرابرند !

shahriar rad

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

لقمان آوند

درسته دیگه !!!
!== شرط نابرابری در نوع و مقدار هست .
شرط نابرابری دو مقداری که ذکر کردید برقراره و true شده . چون نوعشون متفاوته . پس نابرابرند! دقت کنید که شرط نابرابری true شده و اینجا true شده به معنی نابرابر بودن دو مقدار هست !!!

لقمان آوند

خیر درست نیست .
چون در xor فقط 1 مورد از طرفین شرط باید صحیح باشه …
در صورتی که پسر بیشتر از 20 سال هم داریم که هر دوی x و y برای true میشه !!!

پایان زمان پشتیبانی

دانشجوی گرامی، بازه پشتیبانی فعال برای این دوره ۳ ماه است که برای شما به پایان رسیده است.

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
گزارش مشکل