php الشروط

if ... else

آخر تحيين: 07-01-2015

elseif / switch php المُتَغّيرات


إذا أردنا تنفيذ جزء من الشيفرة إذا كان الشرط صحيحا ، نستعمل تصريح if

if(الشرط){
// تنفيذ الشيفرة المتعلقة بالشرط الصحيح
}

لتنفيذ جزء آخر من الشيفرة إذا كان الشرط خاطئا نضيف التصريح else

if(الشرط){
// تنفيذ الشيفرة المتعلقة بالشرط الصحيح
}else{
// تنفيذ الشيفرة المتعلقة بالشرط الخطأ
}

الشرط الثاني else لا يُنفّذ إلا إذا كان شرط if خاطئا . و هذا منطقي ، لأن الحاسوب يبدأ بقراءة الشيفرات بدءا من أعلى الصفحة في اتجاه الأسفل . أي أنه سياصدف أوّلا التعليمة if و يتحقّق من شرطها :
- إذا وجد بأن الشرط صحيح ، يُنفّذ الشيفرة المتواجدة داخل قوسي if . و يتجاهل كليا قراءة الشرط الموالي else.
- أما إذا وجد شرط if خاطئا ، ينتقل مباشرة لتنفيذ الشيفرة الموالية ، و المتواجدة بين قوسي else .

مثال :

<?php
$a = 5;

if ($a > 0) {  // إذا كان المتغير أكبر من 0
    echo "الرقم a ،
          رقم إيجابي لأنه أكبر من 0";
} else {
    echo " الرقم a
          سلبي لأنه أصغر من 0";
}
?>

if : تعني "إذا" ، إذا قمنا بشرح الشيفرة بشكل لغوي :
نطلب من الحاسوب أن يجري مقارنة بين المتغير a و الرقم 0 و ينفّذ لنا الشيفرة الصحيحة :
إذا كان المتغير a أكبر من 0 ، نفذ لنا الشيفرة الأولى
أما إذا كان الأمر غير ذلك "else" أي أن المتغير a ليس أكبر من 0 ، نفّذ لنا الشيفرة الثانية .
جربوا الشيفرة ، ستظهر لكم بأن الرقم إيجابي . أي أن الشرط الأول صحيح . إذا بدّلتم قيمة المتغيّر إلى 5-، سيقوم الحاسوب بقراءة الشيفرة التي تضمها else .

كما لاحظتم استعملنا إشارة (أكبر من)> ، نعم ، هي نفسها التي تعرّفتم عليها في مادّة الرياضيات ، و أتاحت لنا إجراء مقارنة بين المتغير a و الرقم 0 . و هذه الإشارة مع مجموعة أخرى سأعرضها فورا ، تسمّى عوامل القارنة

عوامل المقارنة

رأينا سابقا نوعا آخر من العوامل ، إن كنتم تتذكرون ! هي العوامل الحسابية . سنُغنِي رصيدنا و نتعرف على عوامل جديدة ، تسمى عوامل المقارنة ، تتيح لنا اختيار شروطنا بكل عناية و ذلك بإجراء الإختبارات و المقارنات التي نودها . إليكم القائمة :

php جدول عوامل المقارنة
العاملالإسممثالالتوضيح
==يُساوي$x == $yالشرط صحيح إذا كانت x$ تساوي y$
===يطابق$x === $yالشرط صحيح إذا كانت x$ يساوي y$ و يجب أن يكون المتغيران من نفس
النوع (int , string ...) سنرى مثالا ، أسفل الجدول
!=لا يساوي$x != $yالشرط صحيح إذا كانت x$ مختلفة عن y$
<>لا يساوي$x <> $yالشرط صحيح إذا كانت x$ مختلفة عن y$
!==لا يطابق$x !== $yالشرط صحيح إذا كانت x$ مختلفة عن y$ أو لا تنتميان إلى نفس النوع
>أكبر من$x > $yالشرط صحيح إذا كانت x$ أكبر من y$
<أصغر من$x < $yالشرط صحيح إذا كانت x$ أصغر من y$
>=أكبر من أو تساوي$x >= $yالشرط صحيح إذا كانت x$ أكبر من أو يساوي ل y$
<=أصغر من أو يساوي$x <= $yالشرط صحيح إذا كانت x$ أصغر من أو تساوي ل y$

لاحظتم أن عامل يساوي كأنه مبالغ فيه ، يكون إما بعلامتين == أو ثلاث علامات === و لا نجد العلامة = الواحدة التي نعرفها .
لأن العلامة = الواحدة هي عامل حسابي . عندما نكتب $x = $y . فإن x$ تأخذ قيمة y$ ، مثال :

<?php
 $x = 20;
 $y = 35;
 $x = $y;
 echo $x;
?>

ستعطينا هذه الشيفرة 35 أي أن المتغير x$ أخذ قيمة y$ و لم يعد يحتفظ بقيمته . لذا إذا أجرينا المقارنة بين المتغيرين بهذه الطريقة فإن النتيجة دائما ستأكد أن الشرط if صحيح . مثال :

<?php
 $x = 20;
 $y = 35;

 if ($x = $y) { // استعمال علامة تساوي واحدة ، تعتبر هذه الطريقة خاطئة ، 
   echo 'المتغيران متساويان ';
 }else {
   echo ' المتغيران مختلفان  ';
}
?>

لهذا لا يجب نهائيا السهو و استعمال علامة = تساوي واحدة . لنأخذ المثال السابق و نتبع الطريقة الصحيحة . و نستعمل علامتين أو ثلاث علامات يساوي ، في هذه الحالة كل متغيّر يحتفظ بقيمته ، و بهذا يمكننا إجراء المقارنة بكل اطمئنان .
مثال لاستعمال ==

<?php
 $x = 20;
 $y = 35;

 if ($x == $y) { // == الطريقة الصحيحة ، استعمال 
   echo 'المتغيران متساويان ';
 }else {
   echo ' المتغيران مختلفان  ';
}
?>

المقارنة التي سيجريها شرطكم ستكون صحيحة في هذه الحالة أما في حالات أخرى ، أحيانا نحتاج بالإضافة إلى المقارنة بين محتوى المتغيّرين ، إلى التحقق من تطابق نوعيتهما (int , string ...إلخ) .
لذا نحتاج لاستعمال ثلاث علامات ===

<?php
 $x = 46;   // متغير رقمي (int)
 $y = "46"; // متغير نصّي  (string)

 if ($x == $y) { // طريقة خاطئة لمقارنة نوع المتغير
    echo "المتغيران متطابقان قيمة و نوعا !!؟";
 } else {
    echo "المتغيران لا يتطابقان";
 }
?>    

قيمتا المتغيران x$ و y$ متساويتين لكن نوعيتهما لا تتطابق ، فالمتغير الأول من نوع رقمي أما y$ من نوع نصّي ، و رغم هذا الإختلاف ستظهر الشيفرة السابقة بأن المتغيران متطابقان . لأن ما قامت به هو مقارنة القيمة فقط ، للتحقق من النوع أيضا ، نستعمل ثلاث علامات ===

<?php
 $x = 46;   // متغير رقمي  (int)
 $y = "46"; // متغير نصّي  (string)

 if ($x === $y) { //الطريقة الصحيحة لمقارنة القيمة و النوع
     echo "المتغيران متطابقان قيمة و نوعا";
 } else {
     echo "  المتغيران لا يتطابقان ، لأنهما يختلفان في النوع";
}
?>

بالنسبة للعوامل الأخرى ، أظن أنها واضحة : العامل != هو عكس == ، أما !== هو عكس ===

<?php
 $x = 19;   
 $y = 716;  

 if ($x != $y) {
     echo "قيمة المتغيران مختلفة";
 } else {
     echo "المتغيران متساويان";
}
?>

للتحقق من القيمة و النوع في نفس الوقت ، نستعمل !== بدل !=

حالة خاصّة : نوع boolean

المتغيرات من نوع boolean لا تأخذ إلا قيمتين : true أو false ، يعني صحيح أو خطأ . في لغات البرمجة القيمة true تأخذ مبدئيا الرقم "1" و false نعطيها الرقم 0 .
يمكننا كتابتهما كأي متغير آخر :

$true_variable = 1;
$false_variable = 0;
    // الطريقة التالية صحيحة أيضا . 
    //  بدون مزدوجتين أو هلالين true و false نكتب 
$true_variable = true;
$false_variable = false;

لإجراء اختبار المقارنة :

<?php
$true_variable = true;

if($true_variable == true)
{
    echo 'الشرط صحيح ، يمكننا فعل ما نريده';
} else {
   echo 'الشرط خاطيء ';
}
?>

هذه الطريقة صحيحة لاختبار الشرط . و يمكننا اختزالها كما يلي :

<?php
$true_variable = true;

if($true_variable) // حذفنا القيمة true
{
    echo 'الشرط صحيح ، يمكننا فعل ما نريده';
} else {
   echo 'الشرط خاطيء ، لا يمكنك الدخول';
}

هذه الطريقة هي الأسهل و الأسرع ، بكتابتكم فقط اسم المتغير مكان الشرط . حاسوبكم سيعلم جيدا بأن المتغير عبارة عن boolean ، و تريدون إجراء اختبار عليه إن كان صحيحا .
و الطريقة المستعملة و التي ستصادفونها كثيرا ، هي الآتية و تمثل عكس الإختبار السابق :

<?php
 $true_variable= true;

 if(!$true_variable) // true إذا كان المتغير يختلف عن
 {
    echo 'قيمة المتغير هي false ، لا يمكنك الدخول';
 } else {
    echo 'قيمة المتغير هي true، يمكننا فعل ما نريده';
}
?>	

فرض شروط متعدّدة في نفس الوقت

لإضافة شروط عديدة لنفس التعليمة ، مثلا نريد أن نتحقق من مهنة الزائر و عمره ، نستعمل نوعا آخر من العوامل ، تسمّى عوامل المنطق وعددها 6 بعضها متاشبه سأذكر منها الأهم

php جدول عوامل المنطق
العاملالشّبهالمعنىمثالالتوضيح
AND&&و$a AND $bصحيح إذا كان كل من الشرطين a$ و b$ صحيحين
OR||أو$a OR $bصحيح إذا كان على الأقل شرط واحد صحيح

لنرى مثالا :

<?php
 $age = 16;
 $genre = "تلميذ"; 

 if($genre == "تلميذ" AND $age < 20 ) {
    echo "يمكنك الإستفاد من تخفيض ب 50% عن جميع مشترياتك من موقعنا";
 } else {
    echo "عذرا ، لا يمكنك الإستفادة من أي تخفيض .";
}
?>

إذا كنت تلميذا و عمركم يقل عن 20 سنة ، ستحصل على التخفيض ...
ليكون الشرط صحيحا يجب على كلا المتغيرين أن يستوفيا الشروط ، في حالة ما إذا خل أحدهم بذلك ، مثلا إذا كان العمر 22 سنة فلن تحصلوا على التخفيض بل على الشيفرة التالية التي تقول لكم عذرا . نفس الشيء إذا لم تكونوا تلاميذاً .

أمّا في حالة ما إذا أردنا توفّر شرط واحد فقط لتمكين المعني بالإستفادة من التخفيض ، سنستعمل العامل OR بدل AND

<?php
 $age = 18;
 $genre = "طالب"; 

 if($genre == "تلميذ" OR $age < 20 ) {
     echo "يمكنك الإستفاد من تخفيض ب 50% عن جميع مشترياتك من موقعنا";
 } else {
 echo "عذرا ، لا يمكنك الإستفادة من أي تخفيض .";
}
?>

في هذه الحالة ، إن كنت تلميذا ، فستستفيد من التّخفيض ، مهما كان عمرك .
و إن كان عمرك أقل من 20 سنة ، فستستفيد أيضا من التخفيض و لو لم تكن تلميذا