اذهب إلى المحتوى

السؤال

نشر

كنت أقراء بعض أكواد PHP في أحد السكريبتات مفتوحة المصدر للتعلم منه، ولكن وجد كود يستعمل فيه المعامل :? لتغير قيمة متغير:

 

$comments = $comments ?: do_something();

أنا أعلم ما هو المعامل الثلاثي ternary operator وكيف يتم إستعماله، ولكن كيف يتم إستعمال المعامل :? وما فائدته في PHP؟

Recommended Posts

  • 1
نشر

المعامل :? يدعى Elvis Operator وهو اختصار للمعامل الثلاثي Ternary Operator عند حالة خاصة وهي أن القيمة الشرطية وأول قيمة ضمن المعامل هي المتغير نفسه

المثال التالي باستخدام المعامل الثلاثي Ternary Operator:

$x ? $x : $y;

 يمكن كتابته نفسه بالمعامل Elvis Operator كالتالي:

$x ?: $y;

 

  • 2
نشر

يسمى هذا المعامل بمعامل إلڤيس Elvis Operator ويستعمل مثل المعامل الثلاثي Ternary Operator في حالة واحدة إذا كان الشرط هو ما يجب إستناده إلى المتغير، فعلى سبيل المثال إذا أردنا التأكد من أن قيمة معينة لا تساوي صفر وإسنادها في هذه الحالة إلى متغير ما، أو إسناد قيمة مختلفة إذا كانت تساوي صفر:

<?php
$value = 5;
$var = $value ?: 6;
echo $var;  // 5

بينما إذا كانت قيمة المتغير $value من نوع falsy (صفر على سبيل المثال) فسوف يتم إسناد القيمة الأخرى (القيمة الإفتراضية):

<?php
$value = 0;
$var = $value ?: 6;
echo $var;  // 6

يمكن إعتبار معامل إلڤيس Elvis Operator كإختصار لجملة if else الشرطية كذلك:

<?php
$value = 5;

if($value) {
    $var = $value;
} else {
    $var = 6;
}
echo $var;  // 5

تم شرح كلًا من المعامل الثلاثي Ternary Operator ومعامل إلفيس Elvis Operator في هذه المقالة هنا:

إذا أردت إستخدام معامل إلفيس Elvis Operator في التأكد من أن قيمة متغير ما لا تساوي null فيمكنك إستخدام معامل التجميع Null Coalesce Operator بداية من PHP 7 ، حيث يقوم هذا المعامل بالتأكد من أن قيمة معينة لا تساوي null:

<?php
$value = null;
$var = $value ?? 6;
echo $var;  // 6

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...