بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في هذا الدرس سنتعلم كيفية كتابة جمل شرطية قصيرة دون استخدام جملة If الشرطية ..
من المألوف لدى المعظم تداول الجمل الشرطية بهذه الصيغة :
سنأخذ مثال ثم نحوّله إلى الطريقة التي سنتعلمها هذا اليوم :كود PHP:if (expression) {
// statements
}
قمنا في البداية في السطر الأول من الكود تعريف المتغير الذي قمنا بتسميته a وأعطيناه القيمة 1كود PHP:$a = "1";
$b = "2";
if ($b > $a) {
echo '$b is bigger than $a';
} else {
echo '$a is bigger than $b';
}
وكذلك في السطر الثاني قمنا بتعريف المتغير باسم b وقيمته 2
الآن قمنا بكتابة جملة شرط تحتوي على جملة If في السطر الرابع من الكود ..
ففي السطر الأول من جملة الشرط If قمنا بوضع تعبير Expression يقوم باختبار إذا كانت قيمة المتغير b$ أكبر من المتغير a$ فإذا تحقق الشرط يتم طباعة جملة :
b is bigger than $a$
ثم إذا فشل الشرط (أي لم يتحقق) يقوم مترجم السيرفر بطباعة النص :
a is bigger than $b$
لاحظ في الجمل المطبوعة بعد دالة echo قمنا بكتابتها بين علامتي التنصيص المفردة وليس المزدوجة أي ' وليس " وذلك لتجنب طباعة محتويات المتغيرات حيث أن العلامة المزدوجة تقوم بطباعة قيم المتغيرات المكتوبة بينها أي تطبع 1 بدلاً من a$ و 2 بدلاً من b$
إلا أن العلامة المفردة تقوم بطباعة النص كما هو دونما تغيير أي a$ تطبع a$ و b$ تطبع b$
طبعاً في هذه التجربة سيكون الناتج :
b is bigger than $a$
ماذا لو أردنا اختصار كل ذلك (أي جملة الشرط كاملة) بسطر واحد ،، يمكن استخدام الكود هذا:
عفواً ، لم أقصد ذلك ، لكني تذكرت أنه يمكننا عمل ذلك وتنتهي المشكلة !!كود PHP:if ($b > $a) { echo '$b is bigger than $a'; } else { echo '$a is bigger than $b'; }
سوف نتعلم الآن طريقة أخرى وأفضل نوعاً ما لاختصار السطر نفسه مرة أخرى:
ماذا لو حذفنا الأقواس من الجملة ؟؟ لا شك أنها لن تغير من معنى الكود ، فلنجرب ذلك :كود PHP:echo ($b > $a ? '$b is bigger than $a' : '$a is bigger than $b');
سيبدو الكود هكذا نوعاً من الأكواد الغير مفهومة للمبتدئين ، لذا ، قم باستخدامه في برامجك لتبدو أكثر احترافاً ..!!كود PHP:echo $b > $a ? '$b is bigger than $a' : '$a is bigger than $b';
لقد نسيت شيئاً هاماً .!! هل تعرف ما هو؟؟! نسيت أن أشرح الكود الجديد .!!
في الكود الجديد سواء الذي يحوي أقواساً أم لا فقد قمنا بكتابة الشرط أو التعبير Expression بعد دالة echo طبعاً إذا كنا نريد المساواة نضع إشارة == وليس = وبقية الإشارات حسب مقياس الإشارات في البي إتش بي ...
ثم نضع علامة سؤال (؟) بعد الشرط والتي تعني أن النتيجة في حالة تحقق الشرط ستكون بعد علامة السؤال هذه ..
أي أنك ستكتب نتيجة تحقق الشرط بعدها ، ثم نضع النقطتين الرأسيتين (ونكتب النتيجة في حال عدم تحقق الشرط ...
تساؤل غريب !! ::
ببساطة سأترك الحقل الأخير فارغاً وسأستغني عن النقطتين الرأسيتين (في النهاية لأني لا أريد طباعة شيء في حال عدم تحقق الشرط ،،!!
عفواً ، سأخبرك ماذا سيحدث عند ذلك ، في ذلك الوقت ستظهر لك رسالة في البي إتش بي قريبة من هذه :كود PHP:echo $b > $a ? '$b is bigger than $a';
Parse error: parse error in xxx on line xx
هذا يعني وجود خطأ كبير في الكود أدى إلى توقف تنفيذ أكواد الصفحة التالية !!
فلنجرب إذاً إعادة إشارة (وبعدها سنترك فراغاً (أي لن نكتب شيئاً بعدها سوا
..
لا تجرب ، فذلك سيظهر لك نفس الخطأ:كود PHP:echo $b > $a ? '$b is bigger than $a' : ;
Parse error: parse error in xxx on line xx
إذاً، ما الحل ؟؟؟!
جرب الحل التالي:
لقد قمنا بوضع علامتي تنصيص ' و' متتاليتين ولم نكتب فيها شيئاً وهذا معناه عند عدم تحقق الشرط لا تطبع شيئاً ...كود PHP:echo $b > $a ? '$b is bigger than $a' : '';
وهذا اختصار لذلك العناء الشديد .....!!
في هذه الحالة أنصحك أيضاً بنوع آخر من الجمل الشرطية ، شبيه بهذا :
هذا النوع من الجمل الشرطية المنقوصة ...!!!!كود PHP:if ($b > $a) echo '$b is bigger than $a';
حيث اننا لم نستخدم الأقواس المعوجة { } هنا نكتب الشرط بين الأقواس بعد If وبعد الأقواس نضع نتيجة الشرط ..!!
لكن ، ماذا لو قمنا بالضغط على المفتاح الذهبي (Enter) ثم كتبنا كوداً آخر ؟؟!
هذا سيخبرك بالفشل !!
لا تعجب ، لن تظهر لك رسالة خطأ .. وإنما سيظهر الكود الذي كتبته بعد النتيجة في سطر آخر دائماً ، حيث أنه لن يعتبر داخل جملة الشرط If وسيتم تنفيذه بمفرده ..
ماذا عن الكود التالي:
نعم، إنه كود صحيح، حيث أنا نزلنا سطراً للأسفل لكن قبل كتابة النتيجة ولو نزلنا سطراً آخر بعد النتيجة وأكملنا النتيجة فلن تعتبر داخل الجملة الشرطية ......كود PHP:if ($b > $a)
echo '$b is bigger than $a';
ستخبرني بأنك أعجبت إعجاباً شديداً في هذه الطريقة من الكتابة التي تبدو كشكل "أقرع" لعدم احتوائها على { و } وعدم مرونة التعامل معها ...!!
لكن كيف تطبع جملة ما عند عدم تحقق الشرط في مثل هذا النوع من الجمل ؟؟
خذ هذا الكود :
قمنا بكتابة else في الأسفل ثم كتبنا نتيجة عدم تحقق الشرط ....كود PHP:if ($b > $a)
echo '$b is bigger than $a';
else
echo '$a is bigger than $b';
يمكننا ضم الكود كاملاً في سطر واحد ، فمترجم PHP ذكي للغاية فيفهم هذا الكود بالطريقة الصحيحة :
يبدو الكود السابق جميل جداً لتعقيد طريقة كتابته ....!!كود PHP:if ($b > $a) echo '$b is bigger than $a'; else echo '$a is bigger than $b';
في جميع الحالات قمنا بكتابة تعبير (شرط) Expression ونتيجة في حال تحقق الشرط أو التعبير وأحياناً نتيجة عند عدم تحقق الشرط ....
هذه عدة نماذج لكتابة الجمل الشرطية ..
سأقوم بكتابة المزيد عن هذه الجمل إن شاء الله إن أسعفني الوقت بعد الكتابة عن بعض الدوال والخصائص الأخرى .!!
بقلم : أشرف السمهوري (sBForum)


ونكتب النتيجة في حال عدم تحقق الشرط ...
..
رد مع اقتباس
