اذهب إلى المحتوى

السؤال

نشر

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

<?php

$x = 1;

echo 1 + $x++;

?>


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

Recommended Posts

  • 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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...