TGViewer
| کانال توسعه‌دهندگان PHP | | کانال توسعه‌دهندگان PHP | @developixphp · 1.68K subscribers
Post #44 794
عملگرهای && , || , and , or همگی برای انجام عملیات‌های منطقی استفاده می‌شوند، اما بین آن‌ها تفاوت‌هایی در اولویت اجرا وجود دارد که می‌تواند بر روی نتیجه برنامه تأثیر بگذارد.

عملگر && بررسی می کند که هر دو مقدار true باشند.
عملگر and مانند && عمل می کند اما با الویت پایین تر.

عملگر || بررسی می کند که حداقل یکی از مقادیر true باشد.
عملگر or نیز مانند || عمل می کند اما با الویت پایین تر.

مثال AND:
$a = true;
$b = false;

$result = $a && $b; // false

$result = $a and $b; // true

در هر دو مثال بالا قرار است که بررسی شود هر دو مقدار true باشند، اما چرا خروجی ها متفاوت اند؟
زمانی که از عملگر && استفاده می شود، بررسی می شود که $a و $b برابر true باشند. چنانچه یکی از آنها true نبود خروجی false می شود.

اما همانطور که گفته شد عملگر and نسبت به && الویت اجرا پایین تری دارد، یعنی ابتدا $result برابر $a قرار می گیرد و سپس and $b اجرا می شود.
بیایید با استفاده از پرانتز دقیق تر نشان دهیم:
($result = $a) and $b;


مشخص است که $result برابر $a قرار گرفته است و $a هم برابر true است، در نتیجه and $b تاثیری در نتیجه نخواهد گزاشت و خروجی همان true است.
این مشکل را با گزاشتن پرانتز می توان حل کرد، چرا که پرانتز ها الویت های اجرا را تغییر می دهند:
$result = ($a and $b); // false


در مثال بالا ابتدا داخل پرانتز اجرا می شود و سپس $result برابر نتیجه می شود.

نتیجه می گیریم عملگر = سریع تر از and اجرا می شود درصورتی که && سریع تر از = اجرا می شود.

------

مثال OR:
$a = false;
$b = true;

$result = $a || $b; // true

$result = $a or $b; // false


در هر دو مثال بالا قرار است که بررسی شود حداقل یکی از مقادیر true باشند، اما چرا خروجی ها متفاوت اند؟
جواب سوال دقیقا مانند AND است.

زمانی که از عملگر || استفاده می شود، بررسی می شود که حداقل یکی از $a یا $b برابر true باشند. چنانچه هر دو آنها true نبود خروجی false می شود.

اما همانطور که گفته شد عملگر or نسبت به || الویت اجرا پایین تری دارد، یعنی ابتدا $result برابر $a قرار می گیرد و سپس or $b اجرا می شود.
بیایید با استفاده از پرانتز دقیق تر نشان دهیم:
($result = $a) or $b;


مشخص است که $result برابر $a قرار گرفته است و $a هم برابر false است، در نتیجه or $b تاثیری در نتیجه نخواهد گزاشت و خروجی همان false است.
این مشکل را با گزاشتن پرانتز می توان حل کرد، چرا که پرانتز ها الویت های اجرا را تغییر می دهند:
$result = ($a or $b); // true


در مثال بالا ابتدا داخل پرانتز اجرا می شود و سپس $result برابر نتیجه می شود.

نتیجه می گیریم عملگر = سریع تر از or اجرا می شود درصورتی که || سریع تر از = اجرا می شود.

------

بهتر است در استفاده از عملگر ها دقت کنیم تا باعث ایجا مشکل در برنامه نشویم.
ترجیحا از عملگرهای && و || به جای and و or استفاده کنید.

👤 AmirHossein

💎 Channel: @DevelopixPHP
  • ❤ 9
  • 🔥 6
  • 👍 2
More from @developixphp
  1. Sep 26, 2026این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟ 🔖 #PHP #پی_اچ_پی 👤 Developix 💎 Channe…
  2. Sep 25, 2026🔥 پکیج: قراردادهای ترجمه سیمفونی اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق بر…
  3. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
  4. Sep 11, 2026ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ PHP…
  5. Sep 10, 2026برنامه نویسی سوکت در PHP بخش اول عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از س…
  6. Aug 31, 2026🔥 پکیج: استاندارد PSR-11 برای Container استاندارد PSR-11 فقط یه interface مشترک برای Cont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →