في هذا الدرس، سنناقش الطرق التالية المستخدمة لجعل رموز if-else الطويلة أقصر وأكثر قابلية للقراءة. مشغل PHP الثلاثيسوف تتعلم ما هو وكيفية استخدامه مع الأمثلة.

مشغل PHP الثلاثي هو عامل شرطي يقلل من طول الكود عند إجراء المقارنات والشروط. يعد هذا العامل بديلاً مهمًا لاستخدام if-elseif-else أو المتداخل if else. ويسمى عاملاً ثلاثيًا لأنه يأخذ ثلاثة معاملات.

  • مشغل PHP الثلاثيالمعاملات التي يستغرقها هي كما يلي:
    حالة
  • النتيجة صحيحة (ترجع صحيحة إذا كان الشرط صحيحًا)
  • النتيجة كاذبة

مشغل PHP الثلاثي بناء الجملة هو كما يلي:

$variable = (condition) ? (statement1) : (statement2);

يتم إضافة الشرط بدلاً من الشرط. إذا كان الشرط الخاص بالعبارة 1 صحيحًا، فستتم كتابة البيانات المراد إضافتها. إذا أعاد شرط البيان 2 خطأ، فستتم كتابة البيانات المراد إضافتها.

مشغل PHP الثلاثي

في مثالنا الأول مشغل PHP الثلاثيسنشهد كم يختصر عبارة if-else. إذا كان صحيحًا، فإننا نريد أن نجعل اسم الزر "تسجيل الخروج" لأن المستخدم قام بتسجيل الدخول، وإذا لم يقوم المستخدم بتسجيل الدخول، نريد أن نجعل اسم الزر "تسجيل الدخول" حتى يتمكن المستخدم من تسجيل الدخول. لنفترض أن المتغير is_user_logged_in يُعطى القيمة true إذا قام المستخدم بتسجيل الدخول، وخطأ إذا لم يقوم المستخدم بتسجيل الدخول. في حالة if، تساءلنا عما إذا كان المتغير is_user_logged_in صحيحًا أم لا. نظرًا لأن المتغير لم يكن صحيحًا، لم يتم تنفيذ الرموز الموجودة في الشرط الأول وتم تمريرها إلى الكتلة else. كما تعلم، يتم تنفيذ الرموز الموجودة في كتلة else إذا كانت جميع الشروط الأخرى غير صالحة. في هذه الحالة، تم تنفيذ الرموز الموجودة في كتلة else وتم توفير إخراج "تسجيل الدخول".

// if else ile uzun ifade
$is_user_logged_in = false;
if ($is_user_logged_in === true) {
	echo $button_name = 'Çıkış Yap';
} else {
	echo $button_name = 'Giriş Yap';
}
// Çıktı: Giriş Yap
// ternary operator ile kısa ifade
$is_user_logged_in = false;
echo $button_name = $is_user_logged_in ? 'Çıkış Yap' : 'Giriş Yap';
// Çıktı: Giriş Yap

مع تشكيل صدى PHP مشغل PHP الثلاثييمكننا استخدام . دعونا نرى هذا مع مثالين.

$number = 20;
echo ($number > 15) ? "15'ten daha büyük" : "15'ten daha büyük değil";
// Çıktı: number değişkeninin verisi 15'ten daha büyük
$number = 5;
echo ($number == 10) ? "number değişkeninin verisi 10'a eşit" : "number değişkeninin verisi 10'a eşit değil";
// Çıktı: number değişkeninin verisi 10'a eşit değil

تسلسل مشغلي PHP الثلاثي (تسلسل مشغلي الثلاثي)

في هذا المثال مشغل PHP الثلاثي هناك مشغل ثلاثي جديد فيه. ولهذا السبب هذا التعبير مشغل PHP الثلاثي نحن نسميها مشغلي التسلسل الثلاثي.  الآن دعونا نفهم هذا المثال: لنفترض أن المتغير $is_logged_in يُعطى القيمة "صحيح" إذا قام المستخدم بتسجيل الدخول، و"خطأ" بخلاف ذلك. متغير الرصيد $ هو رصيد المستخدم، ومتغير السعر $ هو سعر المنتج. المتغير message $ هو الرسالة التي سنعرضها للمستخدم. إذا كان المتغير is_logged_in في المتغير $message صحيحًا، فسيستمر الشرط في التنفيذ؛ إذا كانت خاطئة، فسيتم تعيين بيانات "تسجيل الدخول إلى حسابك أولاً لشراء المنتج" إلى متغير الرسالة $. استمر تشغيل الشرط لأن المتغير $is_logged_in كان صحيحًا. كشرط في المشغل الثلاثي الثاني، سألنا ما إذا كانت بيانات متغير الرصيد $ تعادل بيانات متغير السعر $. بيانات متغير الرصيد $ هي 24، وبيانات متغير السعر $ هي 30. وبما أنهما غير متكافئتين، فإن الشرط لم يُرجع صحيحًا، بل أعاد خطأ. مشغل PHP الثلاثيتم تعيين البيانات الأولى فقط إذا عاد الشرط صحيحًا، وتم تعيين البيانات الثانية إذا عاد الشرط خطأ. تم إرجاع الشرط خطأ وتم تعيين البيانات للمتغير message $ "ليس لديك أموال كافية لشراء المنتج." لقد قمنا بطباعة متغير الرسالة $ باستخدام الصدى.

$is_logged_in = true; // kullanıcı giriş yaptı mı?   
$balance = 24; // bakiye
$price = 30; // ürün fiyatı
$message = $is_logged_in
			? ($balance === $price
					? 'Ürünü satın almak için yeterli bakiyeniz var'
					: 'Ürünü satın almak için yeterli bakiyeniz yok')
			: 'Ürünü satın almak için önce hesabınıza giriş yapın';
echo $message;
// Ürünü satın almak için yeterli bakiyeniz yok