المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : درس[6] المشروطات Statements فى الـ php


محمود عفيفى
25-03-2010, 12:14 PM
السلام عليكم ورحمة الله وبركاته

ماهى المشروطات؟ وماهى فوائدها وكيفية إستخدامها؟
هذا سيكون محور درسنا اليوم بإذن الله
المشروطات المعروفة هى If و else وهناك ايضا switch
سوف نشرح كل منهم بالتفصيل فى هذا الدرس بإذن الله.

ماهى فوائد هذه المشروطات وكيفية إستخدامهم؟


هذه المشروطات ببساطة هى البرمجة. بمعنى انها هى الطرق التى تجعل من برمجياتك, برمجيات ديناميكية.

مثلا كا إستخدام للمشروطة if

انت تقول لبرنامج اذا حدث كذا, فقم انت بفعل كذا.

يعنى بإختصار هى الطريقة المساعدة فى جعل برنامجك قادر على اتخاذ القرار بطريقة ديناميكية!.

وهذه المشروطات كما يتضح من اسمها if و else تعنى اذا, غير ذلك, على التوالى.

يكفى الكلام النظرى لندخل لتطبيق عملى.

نفترض اننا نريد من الإسكريبت الخاص بنا ان يطبع الجملة

مرحبا بك يا احمد

فقط فى حالة ان المتغير name له القيمة احمد. سننفذها بالبرمجة بالشكل التالى
<?php
$name = "احمد";
if($name == "احمد"){
echo "مرحبا بك يا احمد";
}
?>قم بتشغيل هذا الإسكريبت البسيط. مرة وقيمة المتغير name هى احمد, ومرة بعد ان تغير قيمة المتغيير name
عندما تقوم بتغيير قيمة المتغير name ستلاحظ ان الإسكريبت لن يطبع شئ.

وهذا لأن شرط ان المتغير name = احمد, لم يعد متوفر.
وكما تلاحظ اننا عند تعيين قيمة للمتغير استخدمنا علامة = واحدة.
لكن عند المقارنة استخدمنا ==
راجع الدرس الرابع المشغلات والعوامل فى الـ PHP Operators and Expressions (http://www.abc4web.net/vb/showthread.php?t=7638) لمعاينة كل عوامل المقارنة.

اذا مرة اخرى كيف يتم كتابة المشروطة if؟
تكتب بالشكل التالى
if(expression){
//do whatever
} لكن ماذا اذا كنا نريد ان نفذ امر ما (مثلا) اذا كانت قيمة المتغير هى true وشئ اخر اذا لم تكن كذلك؟
هنا يأتى دور if و else سويا.
$var = true;
if($var === true){
//do this
}
else{
//do this
} كما تلاحظ المشروطات شئ بسيط وليس به اى تعقيد
هناك شئ فقط اريد التلميح اليه.
وهو لماذا استخدمنا === ؟
وهو انك اذا كنت تتذكر الدرس الثالث انواع المتغيرات فى الـ php او مايسمى Data Types
(http://www.abc4web.net/vb/showthread.php?t=7615)
هو ان قيمة المتغير اذا كانت بها اى شئ مثل حرف مثلا, او اى رقم غير الرقم 0 فهى تعتبر true لكن عندما نستخدم عامل المقارنة ===
فهى تخبرنا اذا كان مابعدها له نفس قيمة و نوع ما قبلها ام لا.

لكن ماذا اذا اردنا ان ننفذ كود ما مثلا, اذا كان المتغير name = احمد
او المتغير user = true ؟

هنا يأتى دور العوامل المساعدة التى سنذكرها بعد قليل.
لكن الأن سنتستخدم العامل or (او || الإثنين لهم نفس المعنى) فى المثال التالى
<?php
$name = "محمد";
$user = true;
if($name == "احمد" or $user === true){
//do this
} ماذا اذا كنا نريد اتخاذ اجراء ما فقط فى حالة توافر اكثر من مشروطة ؟
هنا يأتى دور العامل and او && الإثنين لهم نفس المعنى
if($user === true && $name == ""){
//do this
} فى المشروطة اعلاه اشترطنا ان المتغير user يجب ان يكون له القيمة true
والمتغير name يجب ان يكون فارغ تماما.

هناك ايضا المشروطة elseif وإستخدامها هو, اذا لم تتوفر المشروطة الأولى (if) حاول القيام بالمشروطة التالية وتستخدم كالتالى
<?php
if(expression one){
//do this
}
elseif(expression two){
//do another action
} ويمكنك استخدام elseif بأى عدد تريده
شرط ان يتوفر قبلها مشروطة if ولا يسبقها else لأن else
بمفردها تعنى اذا لم يتوفر كل ماسبق اشتراطه.

اتمنى ان تكون النقاط اعلاه كلها بسيطة وسهلة وقبل ان ابدأ فى شرح المشروطة switch سوف اضع لكم قائمة بالعوامل المساعدة للمشروطة

العوامل


or او ||
and او &&
xor
!

الشرح


ماقبلها او مابعدها صحيح وتم تحقيقه او الأثنين معا تم تحقيقهم
ماقبلها ومابعدها تحقق
مابعدها او ماقبلها تحقق. لكن ليس الأثنين معا.
علامة ! عندما توضع قبل اسم المتغير فى مشروطة if فإنها تقول اذا لم يتوفر هذا المتغير, او ان له القيمة false او 0

واقصد من كلمة تحقق ان المقارنة حدثت وعادة لنا بالقيمة true
يعنى عندما قارنة بين المتغير name وكلمة احمد, فإذا تحققت هذه المشروطة فإنها تعنى انها true وهذا يعنى انها تحققت. اما اذا كان المتغير name لا يساوى احمد. فهذا يعنى انها ستعود لنا بالقيمة false.
وبالنسبة للرمز ! فأليك مثال بسيط عنه ليتضح اكثر.
$user = false;
if(!$user){
//do this, and it'll do it because $user = false
}
elseif($user !== false){
//do this, but it'll not do that, because $user = false
}
لاحظ كيف استخدمناها فى if الأولى, سوف تتحقق المشروطة لأن المتغير $user بالفعل = false لكن فى elseif لن تتحقق المشروطة لأنها تشترط ان المتغير user يكون ليس له القيمة false.

هناك طريقة اخرى مختصرة لكتابة مشروطة if و else
وتكون كالتالى
(expression) ?returned_if_expression_is_true:returned_if_expres sion_is_false; معناها اذا تحقق مابين الأقواس. قم بتنفيذ ما يأتى بعد علامة ؟ مباشرة
ان لم يتحقق قم بتنفيذ ما يأتى بعد علامة :
اتمنى تكون بسيطة وتصل المعلومة.

شئ اخير لأنهى به هذا الموضوع وهو switch
والتحويل او switch
مثلها مثل if و elseif و else الثلاث بواحد مثلما يقولوا.

لنفترض اننا نريد ان نجرى مقارنة على المتغير name مثلا
ونتوقع ان يكون لهذا المتغير عدة قيم, ومع اختلاف القيمة لهذا المتغير سنغير
الإجراء الذى ننفذه.
مثلا المتغير name نريد ان نقوم بإجراء ما اذا كان له القيمة "احمد"
او نقوم بإجراء اخر اذا كان له القيمة "محمد"
او نقوم بإجراء ثالث اذا كان له القيمة "حسن"
او نقوم بإجراء اخر اذا لم يكن له اى قيمة من هذه القيمة.
بإستخدام if و elseif و else
سوف نطبق هذا الأمر بالشكل التالى
if($name == "احمد"){
//do action 1
}
elseif($name == "محمد"){
//do action 2
}
elseif($name == "حسن"){
//do action 3
}
else{
//do this
} مع switch سنصل لنفس النتيجة بالطريقة التالية
switch($name){
case "احمد":
//do action 1
break;
case "محمد":
//do action 2
break;
case "حسن":
//do action 3
break;
default:
//do this
break;
}
لاحظ كيف تم الامر
اول شئ نضع المتغير الذى سنجرى عليه المقارنة بين قوسين بعد كلمة
switch
ثانيا نعطه cases او حالات لهذا المتغير
السطر الثانى (case "احمد")
نقول له اذا كان $name = "احمد"
نفذ الإجراء 1 ثم الجملة break لإنهاء الـ switch
ونفس الشئ بالنسبة لباقى الكود فهم كلهم مثل elseif
الإختلاف الوحيد فى default وهى ماتتساوى مع else او الحالة الإفتراضية.
اذا لم تتوفر اى من الحالات السابقة نفذ مايأتى بعد default

اتمنى تكون الصورة بسيطة بإذن الله.
وان تكون وصلت كل المعلومات بشكل بسيط.

منقول

أبو يوسف
25-03-2010, 02:26 PM
جزاك الله خيرا أخي الكريم وبارك الله فيك

لك مني أجمل تحية

محمود عفيفى
25-03-2010, 03:22 PM
حياك الله أخى أبو يوسف :abc_139:

كينج نت
25-03-2010, 07:11 PM
السلام عليكم ورحمة الله وبركاته

بارك الله بجهودك اخي محمود

بالفعل دوره مميزه ومفيده جداً

فلانزال نتواصل واياك بالمتابعه والاستفاده بإذن الله تعالى

:abc_102:

.

الهمام
26-03-2010, 11:28 AM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

abohmam
04-04-2010, 10:19 PM
شـكــ وبارك الله فيك ـــرا لك أخى محمود

لك مني أجمل تحية .