العامل الثلاثي
Ternary Operator
العامل الثلاثي هو اختصار لعامل التحكم if-else يستخدم في سطر واحد. يتألف العامل الثلاثي من ثلاثة أجزاء. الجزء الأول هو الشرط الصحيح/خاطئ الذي يتم تقييمه. الجزء الثاني هو التعبير الذي يجب تنفيذه إذا كان الشرط صحيحًا. الجزء الثالث هو التعبير الذي يجب تنفيذه إذا كان الشرط غير صحيح. يتم تخصيص نتيجة التعبير إلى متغير. فيما يلي مثال:
نقوم بتعريف متغير منطقي يسمى "condition" ونقوم بتعيين قيمة "true" له. يُستخدم هذا المتغير كشرط للعامل الثلاثي. يفصل علامة الاستفهام (?) بين الشرط والتعبيرات. يعيّن التعبير الأول قيمة "true" للمتغير البولياني "result". يعيّن التعبير الثاني قيمة "false" للمتغير "result". يتم فصل التعبيرات بواسطة النقطتين (:).
في هذه الحالة، "condition == true"، لذا يتم تعيين التعبير الأول، الذي هو "true"، إلى المتغير "result". إليك كيف نعبر عن هذا باستخدام عامل التحكم if-else:
قمنا بتوفير سطرين من الشيفرة باستخدام العامل الثلاثي. الخيار في استخدامه يعود إليك وإلى تفضيلاتك.
عامل التبديل
Switch Operator
عامل التبديل يقارن تعبيرًا بقائمة من القيم الثابتة باستخدام عامل الحالة (case). عندما يتم تطابق قيمة ثابتة، يتم تنفيذ التعبيرات المرافقة. إليك مثال:
نقوم بتعريف متغير صحيح يُسمى x، ونعيّن له قيمة 1. يحتوي عامل التبديل على التعبير الذي يتم تقييمه. في هذه الحالة، التعبير هو المتغير x. عوامل الحالة هي علامات، يتم تعيين قيمة ثابتة مختلفة لكل منها. نظرًا لأن x يساوي 1، سيتم طباعة سلسلة "x is 1" في السجل. يُنهي عامل الاستراحة (break) تنفيذ عامل التبديل.
إذا كان التعبير داخل عامل التبديل لا يتطابق مع أي من عوامل الحالة، سيتم تنفيذ عامل الحالة الافتراضي الاختياري بدلاً من ذلك. على سبيل المثال، إذا لم يتطابق x مع أي من عوامل الحالة، سيتم تنفيذ التعبيرات بعد عامل الحالة الافتراضي. لذلك، إذا كان قيمة x قد تم تعيينها إلى 3، سيتم طباعة سلسلة "x is not 1 or 2" في السجل.
على عكس كتلة if-else، لا يتوقف تنفيذ كتلة عامل التبديل عند تطابق ثابت حالة ما. ما لم يتم الوصول إلى عامل استراحة، سيستمر التنفيذ حتى يتم تنفيذ جميع التعبيرات المتبقية في عامل التبديل. إليك مثال:
يرجى ملاحظة أنه لا توجد تعبيرات تتبع العلامات case 1 أو case 2. إذا تم تطابق أي من هذه العلامات، سيبدأ البرنامج في تنفيذ أي تعبيرات تلي العلامات case حتى يتم الوصول إلى عامل استراحة، أو يتم الوصول إلى عامل افتراضي، أو ينتهي عامل التبديل.
في هذا المثال، لدينا المتغير x بقيمة 1. التعبير x يتطابق مع العلامة case الأولى. يستمر التنفيذ مرورًا بعلامة case 3، إلى وظيفة الطباعة (Print()). يتم طباعة سلسلة "x is 1, 2 or 3" في السجل، ويقوم عامل الاستراحة بالخروج من كتلة التبديل. إذا لم يتطابق x مع أي من علامات case، فإن التعبيرات في عامل الاستراحة ستتم تنفيذها بدلاً من ذلك.
عامل التبديل مفيد في بعض الحالات الخاصة. في معظم الحالات، ستعمل كتلة if-else بنفس الكفاءة، على الرغم من أن كتلة التبديل-حالة قد تكون أكثر فعالية واتساعًا. فيما يلي مثال مفيد على كتلة التبديل-حالة. سيقوم هذا الكود بتقييم فترة الرسم البياني بالدقائق، وسيعيد سلسلة إذا كانت فترة الرسم البياني تتطابق مع عدة فترات رسم بياني شائعة:
يتم تعيين المتغير الصحيح "period" إلى فترة الرسم البياني الحالي، بالدقائق، باستخدام المتغير المحدد مسبقًا "_Period". يقارن عامل التبديل "period" بعدة فترات رسم بياني شائعة، بما في ذلك H1، H4، وD1. إذا كانت "period" تتطابق مع أي من فترات الرسم البياني الشائعة، يتم تعيين السلسلة المناسبة إلى المتغير النصي "printPeriod". في حال عدم تطابق "period" مع أي من هذه الفترات الرسم البياني، يتم بناء سلسلة فترة الرسم البياني باستخدام البادئة "M" وفترة الرسم بالدقائق.
على سبيل المثال، إذا كانت "period" تساوي 240، يتم تعيين المتغير "printPeriod" إلى السلسلة "H4". إذا كانت "period" تساوي 15، سيتم تنفيذ التعبير الذي يلي عامل الاستراحة، وسيتم تعيين "printPeriod" إلى السلسلة "M15". يمكن استخدام المتغير "printPeriod" لطباعة فترة الرسم البياني بطريقة ودية للمستخدم في السجل أو على الشاشة.
Ternary Operator
العامل الثلاثي هو اختصار لعامل التحكم if-else يستخدم في سطر واحد. يتألف العامل الثلاثي من ثلاثة أجزاء. الجزء الأول هو الشرط الصحيح/خاطئ الذي يتم تقييمه. الجزء الثاني هو التعبير الذي يجب تنفيذه إذا كان الشرط صحيحًا. الجزء الثالث هو التعبير الذي يجب تنفيذه إذا كان الشرط غير صحيح. يتم تخصيص نتيجة التعبير إلى متغير. فيما يلي مثال:
كود PHP:
bool condition = true;
bool result = condition ? true : false;
Print(result);
// Output: true
في هذه الحالة، "condition == true"، لذا يتم تعيين التعبير الأول، الذي هو "true"، إلى المتغير "result". إليك كيف نعبر عن هذا باستخدام عامل التحكم if-else:
كود PHP:
bool condition = true;
bool result;
if(condition == true) result = true;
else result = false;
Print(result);
// Output: true
عامل التبديل
Switch Operator
عامل التبديل يقارن تعبيرًا بقائمة من القيم الثابتة باستخدام عامل الحالة (case). عندما يتم تطابق قيمة ثابتة، يتم تنفيذ التعبيرات المرافقة. إليك مثال:
كود PHP:
int x = 1;
switch(x)
{
case 1:
Print("x is 1");
// Output: x is 1
break;
case 2:
Print("x is 2");
break;
default:
Print("x is not 1 or 2");
}
نقوم بتعريف متغير صحيح يُسمى x، ونعيّن له قيمة 1. يحتوي عامل التبديل على التعبير الذي يتم تقييمه. في هذه الحالة، التعبير هو المتغير x. عوامل الحالة هي علامات، يتم تعيين قيمة ثابتة مختلفة لكل منها. نظرًا لأن x يساوي 1، سيتم طباعة سلسلة "x is 1" في السجل. يُنهي عامل الاستراحة (break) تنفيذ عامل التبديل.
إذا كان التعبير داخل عامل التبديل لا يتطابق مع أي من عوامل الحالة، سيتم تنفيذ عامل الحالة الافتراضي الاختياري بدلاً من ذلك. على سبيل المثال، إذا لم يتطابق x مع أي من عوامل الحالة، سيتم تنفيذ التعبيرات بعد عامل الحالة الافتراضي. لذلك، إذا كان قيمة x قد تم تعيينها إلى 3، سيتم طباعة سلسلة "x is not 1 or 2" في السجل.
على عكس كتلة if-else، لا يتوقف تنفيذ كتلة عامل التبديل عند تطابق ثابت حالة ما. ما لم يتم الوصول إلى عامل استراحة، سيستمر التنفيذ حتى يتم تنفيذ جميع التعبيرات المتبقية في عامل التبديل. إليك مثال:
كود PHP:
int x = 1;
switch(x)
{
case 1:
case 2:
case 3:
Print("x is 1, 2 or 3");
// Output: x is 1, 2 or 3
break;
default:
Print("x is not 1, 2, or 3");
break;
}
يرجى ملاحظة أنه لا توجد تعبيرات تتبع العلامات case 1 أو case 2. إذا تم تطابق أي من هذه العلامات، سيبدأ البرنامج في تنفيذ أي تعبيرات تلي العلامات case حتى يتم الوصول إلى عامل استراحة، أو يتم الوصول إلى عامل افتراضي، أو ينتهي عامل التبديل.
في هذا المثال، لدينا المتغير x بقيمة 1. التعبير x يتطابق مع العلامة case الأولى. يستمر التنفيذ مرورًا بعلامة case 3، إلى وظيفة الطباعة (Print()). يتم طباعة سلسلة "x is 1, 2 or 3" في السجل، ويقوم عامل الاستراحة بالخروج من كتلة التبديل. إذا لم يتطابق x مع أي من علامات case، فإن التعبيرات في عامل الاستراحة ستتم تنفيذها بدلاً من ذلك.
عامل التبديل مفيد في بعض الحالات الخاصة. في معظم الحالات، ستعمل كتلة if-else بنفس الكفاءة، على الرغم من أن كتلة التبديل-حالة قد تكون أكثر فعالية واتساعًا. فيما يلي مثال مفيد على كتلة التبديل-حالة. سيقوم هذا الكود بتقييم فترة الرسم البياني بالدقائق، وسيعيد سلسلة إذا كانت فترة الرسم البياني تتطابق مع عدة فترات رسم بياني شائعة:
كود PHP:
int period = _Period;
string printPeriod;
switch(period)
{
case 60:
printPeriod = "H1";
break;
case 240:
printPeriod = "H4";
break;
case 1440:
printPeriod = "D1";
break;
default:
printPeriod = "M" + period;
}
يتم تعيين المتغير الصحيح "period" إلى فترة الرسم البياني الحالي، بالدقائق، باستخدام المتغير المحدد مسبقًا "_Period". يقارن عامل التبديل "period" بعدة فترات رسم بياني شائعة، بما في ذلك H1، H4، وD1. إذا كانت "period" تتطابق مع أي من فترات الرسم البياني الشائعة، يتم تعيين السلسلة المناسبة إلى المتغير النصي "printPeriod". في حال عدم تطابق "period" مع أي من هذه الفترات الرسم البياني، يتم بناء سلسلة فترة الرسم البياني باستخدام البادئة "M" وفترة الرسم بالدقائق.
على سبيل المثال، إذا كانت "period" تساوي 240، يتم تعيين المتغير "printPeriod" إلى السلسلة "H4". إذا كانت "period" تساوي 15، سيتم تنفيذ التعبير الذي يلي عامل الاستراحة، وسيتم تعيين "printPeriod" إلى السلسلة "M15". يمكن استخدام المتغير "printPeriod" لطباعة فترة الرسم البياني بطريقة ودية للمستخدم في السجل أو على الشاشة.