• 2

أولوية المعاملات في لغة ال php

لدى مشكلة في فهم أولوية المعاملات في لغة ال php ، على سبيل المثال النص البرمجي التالي

<?php

$x = 1;

echo 1 + $x++;

?>


من المفترض ان يقوم بطباعة الرقم 3 حيث ان أولوية معامل المضاعفة  "++"  أعلى من اولوية معامل الجمع  "+"  ولكن عند تشغيل النص البرمجي  يقوم بطباعة الرقم 2 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 3

سؤال جيد جداً أعتقد سيستفيد الجميع من الإجابه عليه.
يقع دائماً أغلب المبتدئين في مثل هذه المشكله وكذلك المحترفين ايضاً بسبب عدم الإنتباه إلي أولوية ترتيب الكود بطريقه صحيحة ومنطقيه.

إذا كنت تُريد زياده المتغير $x بواحد فعليك الإنتباه لموقعه في الكود اولاً.
وزيادة لمعلوماتِك انه هناك طريقتين لأستخدام الزياده على المتغيرات من نوع INTEGER اي التي قيمتة رقمية وليست نص.
وكذلك في عملية النقصان وهي عكس عمليه الزياده.
دعونا نكتشف هذه الفروقات وكيف نستخدمها.
 

سنفترض أن المتغير $x يساوي القيمة 1 ونريد ان نستخدم معه ++ للزياده عليه بـ 1 لتُصبح قيمته 2 وثم نقوم بعملية الجمع التي نُريد.
لاحظ فقط الترتيب في هذا المثال:

<?php
$x = 1;
$x++;
echo 1 + $x;
?>

اعتقد هذا منطقياً جداً حتى الان.
انشأنا متغير $x يساوي 1 ثم في سطر جديد قمنا باستخدام ++ في نهاية المتغير $x لنزيد عليه 1 وبعد ذلك في سطر جديد قمنا بعملية الجمع 1 + $x وطباعة الناتج وهو 3 بالتأكيد.

هل تعلم أخي الكريم "محمد عبدالعاطي" أن مثالك لا يوجد به الا خطأ بسيط جداً وهو انك استخدمت ++ في نهاية المتغير $x داخل عملية الجمع.
اما إذا كنت استخدمت ++ قبل المتغير كان الامر سيتم بدون اي مشاكل. كيف؟!
هكذا:
 

<?php
$x = 1;
echo 1 + ++$x;
?>

هل لاحظت الفرق البسيط؟ الفرق هو تقديم ++ قبل المتغير.
ففي هذا المثال يتم اضافة الزياده علي المتغير اولاً ثم بعد ذلك يقوم بعملية الجمع وكأن الامر هكذا 1 + (1 + $x)

الامر ليس صعباً او مستحيل فقط تعلم اين تضع العلامات ++ او --. هل هناك استخدام للعلامات --؟ نعم وهي لا تزيد شيءً عن استخدام ++ ولكن الفرق هنا ان -- تعمل عمل الطرح بـ 1 ايضاً لا اكثر من ذلك وإختلاف في ترتيب الكود في عملية الطرح.
لنأخذ مثال على العلامات --:

<?php
$x = 3;
echo --$x - 1;
?>

هذا المثال نقول فيه أن المتغير $x يساوي 3 ويطبع عملية الطرح بتقديم المتغير الذي نريد ان نُنقص منه 1 باستخدام -- قبل المتغير ثم نطرح منه 1 ايضاً ويكون الناتج 1.
إذا قمنا بعكس الترتيب سوف يكون الناتج قيمه سالبة اي -1. كيف؟!
هكذا:

<?php
$x = 3;
echo 1 - --$x;
?>

هذا هو منطق عملية الطرح أن يكون الأكبر هو ما تتم عليه عملية الطرح اي لا يصح ان نقول 1 طرح 5 وأن الاستخدام الصحيح هو 5 طرح 1 ليصبح الناتج 4

لمزيد من الأمثله والتفاصيل حول استخدام هذه العلامات من موقع PHP الرسمي اضغط هنا.

تمّ تعديل بواسطة xalcrazy
2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

شكرًا على الإجابة التفصيلية أخي العزيز عبدالرحمن أتمنى لك دوام التوفيق.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن