قسم وحدات PHP. PHP: العوامل الحسابية. عمليات الزيادة والنقصان

💖 هل يعجبك؟شارك الرابط مع أصدقائك

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

اتخذ مطورو لغة PHP منهجًا جيدًا ولم يقموا بأي محاولة لإعادة اختراع العجلات المصممة لهذا الغرض. الحقيقة هي أن العديد من الوظائف الرياضية الأساسية المستخدمة في PHP هي مجرد أغلفة حول نظيراتها في لغة C.

عمليات رياضية

تتم معظم الرياضيات في PHP على شكل وظائف مدمجة بدلاً من العمليات. بالإضافة إلى عوامل المقارنة، توفر PHP خمسة عوامل حسابية بسيطة، بالإضافة إلى بعض عوامل الاختصار التي تسمح لك بإنشاء تعبيرات أقصر للزيادة والنقصان والتخصيص.

عمليات حسابية

تتضمن العمليات الحسابية الخمس الأساسية تلك التي يتم تنفيذها بشكل شائع في أي آلة حاسبة ذات أربع وظائف، بالإضافة إلى المعامل (%). ويرد في الجدول وصف موجز للعمليات الحسابية:

عمليات حسابية
عملية وصف
+ يُرجع مجموع قيم المعاملين الخاصين به
- إذا كان هناك معاملان، فسيتم طرح قيمة المعامل الأيمن من قيمة المعامل الأيسر. إذا كان هناك فقط المعامل الأيمن، فإن العملية ترجع قيمة ذلك المعامل بالإشارة المعاكسة
* يُرجع حاصل ضرب قيم المعاملين الخاصين به
/ تُرجع نتيجة النقطة العائمة لقسمة قيمة المعامل الأيسر على قيمة المعامل الأيمن
% إرجاع باقي عدد صحيح مقسومًا على قيمة المعامل الأيسر على القيمة المطلقة للمعامل الأيمن

عند استخدام العمليات الحسابية الثلاث الأولى الموضحة أعلاه (+، -، *) في البرنامج، يجب أن تأخذ في الاعتبار أنه عند إجراء هذه العمليات، يحدث انتشار النوع من قيم الفاصلة العائمة مزدوجة الدقة إلى القيم الصحيحة. ما يعنيه هذا هو أنه إذا كان كلا معاملي العملية عبارة عن أعداد صحيحة، فإن النتيجة هي عدد صحيح، وإذا كان أحد المعاملات على الأقل عبارة عن رقم فاصلة عائمة مزدوج الدقة، فإن النتيجة هي فاصلة عائمة مزدوجة الدقة رقم. يحدث نفس النوع من الانتشار عند إجراء عملية القسمة؛ بالإضافة إلى ذلك، هناك تأثير إضافي يتمثل في أن النتيجة تصبح رقمًا عائمًا مزدوج الدقة إذا لم يتم إجراء القسمة بدون باقي (بالكامل).

تقبل عملية modulo (%) في PHP المعاملات الصحيحة، وعندما يتم تطبيق هذه العملية على أرقام الفاصلة العائمة مزدوجة الدقة، يتم تحويل هذه الأرقام أولاً إلى أعداد صحيحة (عن طريق تجاهل الجزء الكسري). نتيجة مثل هذه العملية تكون دائمًا عددًا صحيحًا.

عمليات الزيادة والنقصان

الكثير من بناء جملة PHP مشتق من لغة C، ومبرمجو لغة C معروفون بحبهم للإيجاز ويفخرون به. إن عوامل الزيادة والنقصان، المأخوذة من لغة C، تجعل من الممكن تمثيل تعبيرات مثل $count = $count + 1 بشكل أكثر دقة، والتي عادة ما توجد في كثير من الأحيان في البرامج.

يتم استخدام عامل الزيادة (++) لإضافة واحد إلى قيمة المتغير المتأثر بالعملية، ويقوم عامل التخفيض (--) بطرح واحد من قيمة المتغير.

ولكل من هاتين العمليتين نوعان - لاحقة(في هذا النموذج يتم وضع علامة العملية مباشرة بعد المتغير المتأثر بالعملية) و بادئة(في هذا النموذج توضع إشارة العملية مباشرة قبل المتغير الذي تنطبق عليه العملية). كلاهما لهما نفس التأثير الجانبي لتغيير قيمة المتغير، لكن عوامل اللاحقة والبادئة ترجع قيمًا مختلفة عند استخدامها كتعبيرات. تعمل عملية اللاحقة بحيث يتم تغيير قيمة المتغير بعد إرجاع قيمة التعبير، وتعمل عملية البادئة بحيث يتم تغيير القيمة أولا ثم يتم إرجاع القيمة الجديدة إلى المتغير. يمكن اكتشاف هذا الاختلاف باستخدام عوامل التناقص والزيادة في عوامل التعيين:

كود PHP عدد $ = 0؛ نتيجة $ = $count++; صدى "نتيجة زيادة $count++: ".$result."
"; $count = 0; $result = ++$count; echo "نتيجة زيادة عدد ++$: ".$result."
";

تنتج العبارات التالية المخرجات التالية في نافذة المتصفح:

عمليات الزيادة

في هذا المثال، عامل التشغيل $result = $count++ مكافئ تمامًا لعوامل التشغيل:

كود PHP نتيجة $ = $count؛ $count = $count + 1;

بالإضافة إلى ذلك، فإن عامل التشغيل $result = ++$count يعادل عوامل التشغيل التالية:

كود PHP $count = $count +1؛ نتيجة $ = $count؛

مشغلي التعيين

تعمل عوامل الزيادة (والإنقاص) على تقليل كمية التعليمات البرمجية المطلوبة لإضافة واحد إلى قيمة متغير، ولكنها لا تقلل من كمية التعليمات البرمجية التي تقوم بتعيين متغير نتيجة إضافة قيمته إلى رقم آخر أو نتيجة عمليات حسابية أخرى . لحسن الحظ، جميع العوامل الحسابية الخمسة لها عوامل إسناد مقابلة (+=، -=، *=، /=، و%=)، والتي تسمح لك بتعيين نتيجة عملية حسابية على قيمة هذا المتغير إلى متغير في واحد تعبير قصير. على سبيل المثال، المشغل

كود PHP $count = $count * 3؛

يمكن اختصارها ك

كود PHP $count *= 3;

وظائف الرياضيات البسيطة

الخطوة التالية في جعل البرنامج أكثر تعقيدًا من البرنامج الذي يستخدم العمليات الحسابية فقط هي استخدام جميع أنواع الوظائف. تتيح لك الوظائف تنفيذ مهام مثل التحويل من نوع رقم إلى آخر (راجع مقالة أنواع البيانات) والعثور على الحد الأدنى أو الحد الأقصى للرقم في مجموعة من الأرقام. ويبين الجدول التالي وظائف رياضية بسيطة:

وظائف PHP الرياضيات البسيطة
وظيفة وصف
أرضية() تأخذ معلمة فعلية واحدة (عادةً ما تكون رقم فاصلة عائمة مزدوج الدقة) وتقوم بإرجاع أكبر عدد صحيح أقل من أو يساوي تلك المعلمة الفعلية (تقريبًا للأسفل)
سقف() اسم هذه الوظيفة هو اختصار لكلمة السقف. تأخذ الدالة معلمة فعلية واحدة (عادةً رقم فاصلة عائمة مزدوج الدقة) وتقوم بإرجاع أصغر عدد صحيح أكبر من أو يساوي تلك المعلمة الفعلية (التقريب لأعلى)
دائري() تأخذ معلمة فعلية واحدة (عادةً ما تكون رقم فاصلة عائمة مزدوج الدقة) وتقوم بإرجاع أقرب عدد صحيح
عضلات المعدة() القيمة المطلقة للرقم. إذا كانت المعلمة الفعلية الرقمية الوحيدة لها قيمة سالبة، فستُرجع الدالة الرقم الموجب المقابل؛ إذا كانت المعلمة الفعلية موجبة، فإن الدالة ترجع المعلمة الفعلية نفسها
دقيقة () يقبل أي عدد من المعلمات الفعلية الرقمية (لكن واحدة على الأقل) ويعيد أصغر قيم المعلمات الفعلية
الأعلى() يقبل أي عدد من المعلمات الفعلية الرقمية (ولكن ليس أقل من واحد) ويعيد أكبر قيم المعلمات الفعلية

على سبيل المثال، نتيجة التعبير التالي هي 3 لأن قيمة كل تعبير استدعاء دالة هي أيضًا 3:

كود PHP $result = min(3, abs(-3), max(round(2.7), ceil(2.3), Floor(3.9)));

توليد أرقام عشوائية

تستخدم لغة PHP مولدين للأرقام العشوائية (يتم استدعاؤهما على التوالي باستخدام الدالات راند ()و mt_rand()). ويرتبط كل من هذه المولدات بثلاث وظائف لنفس الغرض: وظيفة تحديد القيمة الأولية ( ساند ()و mt_srand())، الدالة نفسها للحصول على رقم عشوائي والدالة التي تأخذ عينات من أكبر عدد صحيح يمكن إرجاعه بواسطة المولد (( getrandmax()و mt_getrandmax())). تقوم الدالتان getrandmax() وmt_getrandmax() بإرجاع أكبر رقم يمكن إرجاعه بواسطة rand() أو mt_rand()، والذي يقتصر على 32768 على أنظمة Windows الأساسية.

قد يعتمد اختيار وظيفة توليد الأرقام العشوائية الزائفة المحددة المستخدمة في وظيفة rand() على المكتبات التي تم تجميع مترجم PHP معها. في المقابل، يستخدم مولد mt_rand() دائمًا نفس وظيفة توليد الأرقام العشوائية الزائفة (mt اختصار لـ Mersenne Twister)، ويدعي مؤلف الوثائق التشغيلية لوظيفة mt_rand() أن هذه الوظيفة أيضًا أسرع و" أكثر عشوائي" (من وجهة نظر التشفير) من rand (). ليس لدينا أي سبب للشك في صحة هذه العبارات، ولهذا السبب نفضل استخدام الدالة mt_rand() بدلاً من rand().

عند استخدام بعض إصدارات PHP على بعض الأنظمة الأساسية، يبدو أن الدالتين rand() وmt_rand() تنتجان أرقامًا عشوائية تبدو معقولة، حتى بدون إعداد بذرة أولاً. ولكن لا ينبغي الوثوق بمثل هذا الانطباع. أولاً، لا يمكن نقل البرامج التي تستخدم وظائف لتوليد أرقام عشوائية دون تحديد قيمة أولية بسهولة إلى منصات أخرى، وثانيًا، لا يمكن ضمان التشغيل الموثوق لهذه الوظائف دون تحديد قيمة أولية.

الطريقة النموذجية لتعيين القيمة الأولية لأي من مولدات الأرقام العشوائية في PHP (باستخدام الدالة mt_srand() أو srand()) هي كما يلي:

كود PHP mt_srand((double)microtime()*1000000);

يقوم هذا العامل بتعيين القيمة الأولية للمولد، والتي تساوي عدد الميكروثانية التي انقضت بحلول هذا الوقت منذ حساب آخر ثانية كاملة. (إن عملية المضاعفة في هذه العبارة ضرورية بالفعل لأن الدالة microtime() ترجع سلسلة، والتي يتم التعامل معها كعدد صحيح في عملية الضرب ولكن ليس في عملية تمرير المعلمات إلى الدالة.) نوصي بأن يقوم القارئ بإدخال عامل التهيئة المحدد حتى لو لم يكن غرض هذا العامل واضحًا تمامًا له؛ إن مجرد وضع هذا البيان على كل صفحة PHP، مرة واحدة فقط، قبل استخدام الدالة mt_rand() أو rand() المقابلة، سيضمن تغير نقطة البداية وبالتالي إنتاج تسلسل عشوائي مختلف في كل مرة.

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

من الواضح أن وظائف توليد الأرقام العشوائية الزائفة هذه تُرجع الأعداد الصحيحة فقط، ولكن يمكن بسهولة تحويل عدد صحيح عشوائي من نطاق معين إلى رقم الفاصلة العائمة المقابل (على سبيل المثال، رقم من النطاق 0.0 إلى 1.0 ضمنًا) باستخدام تعبير مثل rand () / getrandmax (). يمكن بعد ذلك تغيير حجم النطاق المحدد وتغييره حسب الحاجة. فيما يلي مثال:

كود PHP // لنفترض أننا بحاجة إلى إنشاء رقم عشوائي من 100.0 إلى 120.0 $random = 100.0 + 20.0 * mt_rand() / mt_getrandmax(); صدى $ عشوائي."
"; // إنشاء أعداد صحيحة (100 - 120)؛ جولة الصدى($random);

حاول تحديث الصفحة بهذا الرمز عدة مرات للتأكد من إنشاء أرقام عشوائية.

الثوابت الرياضية

في PHP الإصدار 4.0، كان هناك ثابت رياضي واحد فقط موصوف في الوثائق - M_PI (قيمة π، ممثلة كرقم فاصلة عائمة مزدوج الدقة). وبدءًا من PHP 4.0.2، تم تقديم العديد من الثوابت الجديدة. معظم هذه الثوابت الجديدة تتعلق بـ π (أو مضاعفاتها)، e (أو مضاعفاتها)، والجذور التربيعية؛ بالإضافة إلى ذلك، تنتمي بعض الثوابت إلى أنواع أخرى. ولكن في الإصدارات اللاحقة، ولعدة أسباب، تم تقليص قائمة الثوابت مرة أخرى إلى عدد صغير نسبيًا من الثوابت الرياضية المحددة مسبقًا:

PHP الثوابت الرياضية
ثابت وصف
M_PI π
M_PI_2 π/2
M_PI_4 π/4
M_1_PI 1/ط
M_2_PI 2/ط
M_2_SQRTPI 2 / جذر(π)
أنا ه
M_SQRT2 سرت(2)
M_SQRT1_2 1/جذر(2)
M_LOG2E سجل 2 (هـ)
M_LOG10E سجل (ه)
M_LN2 سجل (2)
M_LN10 سجل(10)

التحقق من تنسيق الرقم

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

الفحص الأول والأبسط هو استخدام الوظيفة is_numeric(). كما هو الحال مع معظم الاختبارات الأخرى، ترجع الدالة is_numeric نتيجة منطقية - صحيحة إذا كانت المعلمة التي تم تمريرها إليها عبارة عن بيانات رقمية من أي نوع (موقعة أو غير موقعة، عدد صحيح أو نقطة عائمة) أو تعبير رياضي يُرجع قيمة رقمية صالحة.

استخدام الوظائف is_int()و is_floatيمكنك تحديد ما إذا كان الرقم عددًا صحيحًا أم كسرًا. هناك فحصان آخران أكثر تعقيدًا بعض الشيء: الوظائف غير محدود ()و غير محدود ()تسمح لك بإجراء الاختبارات التي تشير إليها أسماؤها بالضبط (سواء كان العدد محدودًا أم لا نهائيًا). لكن بالمعنى الدقيق للكلمة، فإن نطاق القيم التي تمتد عليها هذه الوظائف لا يمكن أن يشمل اللانهاية الفعلية (وهل يمكن حتى التحقق مما إذا كان الرقم له قيمة كبيرة بلا حدود؟). وبدلاً من ذلك، يتم استخدام حدود نطاق قيم الفاصلة العائمة المسموح بها على نظام معين.

فيما يلي مثال لاستخدام هذه الوظائف:

كود PHP is_numeric(4); // صحيح is_numeric(25 - 6); // صحيح is_numeric("25"); // صحيح is_numeric("25 - 6"); // خطأ is_int(4); // صحيح is_int(4.2); // خطأ is_int("4"); // خطأ - هذا الفحص أكثر صرامة من التحقق باستخدام الدالة is_numeric() is_float(4); // خطأ is_float(4.0); // صحيح is_float(M_PI); // حقيقي

تحويل أنظمة الأرقام

بشكل افتراضي، يستخدم PHP الأساس 10 لتحويل القيم الرقمية من التمثيل الخارجي إلى التمثيل الداخلي للأمام والخلف. يمكنك أيضًا إخبار مترجم PHP أن التمثيل الخارجي يستخدم أرقامًا ثمانية ذات أساس 8 (للقيام بذلك، يجب عليك إدخال 0 بادئة). )، أو الأرقام السداسية العشرية المحددة في الأساس 16 (للقيام بذلك، يجب عليك بادئة الرقم بـ 0x).

بالطبع، بعد تحويل الأرقام من تمثيل خارجي إلى تمثيل داخلي، يتم تخزينها في الذاكرة بتنسيق ثنائي، ويتم تنفيذ جميع العمليات الحسابية والرياضية الأساسية في نظام التشغيل نفسه في الأساس 2. بالإضافة إلى ذلك، توفر لغة PHP عدد من الوظائف لتحويل الأرقام من قاعدة واحدة لنظام العد إلى قاعدة أخرى. وترد نظرة عامة على هذه الميزات في الجدول أدناه:

وظائف تحويل نظام الأرقام
وظيفة وصف
بينديك() تأخذ معلمة سلسلة واحدة تمثل عددًا صحيحًا ثنائيًا (رقم أساسي 2) وتقوم بإرجاع تمثيل السلسلة ذات الأساس 10 لذلك الرقم
ديكبين () يشبه BinDec()، ولكنه يتحول من الأساس 10 إلى الأساس 2
أكتوبر ديسمبر () تشبه BinDec()، ولكنها تقوم بالتحويل من الأساس 8 إلى الأساس 10
إستخلص بالإغلاء() يشبه BinDec()، ولكنه يتحول من الأساس 10 إلى الأساس 8
هيكسديك() تشبه BinDec()، ولكنها تقوم بالتحويل من الأساس 16 إلى الأساس 10
ديكهيكس () تشبه BinDec()، ولكنها تقوم بالتحويل من الأساس 10 إلى الأساس 16
base_convert() يقبل معلمة سلسلة (تمثل العدد الصحيح المطلوب تحويله) ومعلمتين صحيحتين (الأصل والجذر المطلوب). تقوم بإرجاع سلسلة تمثل الرقم المحول. في هذا السطر، يتم تمثيل الأرقام الأكبر من 9 (10 إلى 35) بالأحرف a-z. يجب أن تكون كل من القواعد الأصلية والمرغوبة ضمن نطاق 2-36

جميع وظائف تحويل نظام الأرقام هي وظائف ذات أغراض خاصة تقوم بتحويل الأرقام من قاعدة محددة إلى أخرى. الاستثناء هو الدالة base_convert()، التي تقبل معلمات عشوائية تشير إلى القواعد الأولية والناتجة.

لاحظ أن جميع وظائف تحويل نظام الأرقام تقبل معلمات السلسلة وترجع قيم السلسلة، ولكن يمكنك استخدام معلمات رقمية عشرية والاعتماد على مترجم PHP لإجراء تحويل النوع بشكل صحيح. بمعنى آخر، ينتج كل من DecBin("1234") وDeBin(1234) نفس النتيجة.

الأسس واللوغاريتمات

تتضمن لغة PHP وظائف أسية ولوغاريتمية قياسية في نوعين - للعمل في القاعدة 10 والقاعدة e (الموضحة في الجدول).

توفر PHP دالة exp() لرفع e إلى قوة معينة، ولكن لا توجد دالة ذات معلمة واحدة لرفع 10 إلى قوة معينة، ومع ذلك، يمكنك استخدام الدالة pow() بدلاً من ذلك، والتي تأخذ معلمتين، مما يعطي 10 كمعلمة أولى.

يمكنك التحقق من أن الدوال الأسية واللوغاريتمية التي لها نفس الأساس هي معكوسات لبعضها البعض عن طريق التحقق من هوية النتائج التي تم الحصول عليها بهذه الطريقة:

كود PHP $test_449 = 449.0; $test_449 = الأسرى(10, exp(log(log10($test_449)))); صدى "test_449 = $test_449"; // test_449 = 449

الدوال المثلثية

توفر لغة PHP مجموعة قياسية من الدوال المثلثية الأساسية، والتي ترد معلومات عامة عنها في الجدول:

الدوال المثلثية
وظيفة وصف
باي() لا تأخذ أي معلمات وترجع قيمة تقريبية لـ π (3.1415926535898). يمكن استخدامه بالتبادل مع ثابت M_PI
الخطيئة () يقبل معلمة رقمية بالتقدير الدائري ويعيد جيب المعلمة كرقم فاصلة عائمة مزدوج الدقة
كوس () يأخذ معلمة رقمية بالتقدير الدائري ويعيد جيب تمام المعلمة كرقم فاصلة عائمة مزدوج الدقة
تان () يقبل معلمة رقمية بالتقدير الدائري ويعيد ظل المعلمة كرقم فاصلة عائمة مزدوج الدقة
آسين () يأخذ معلمة رقمية ويعيد قوس جيب المعلمة بالتقدير الدائري. يجب أن تكون المدخلات بين -1 و1 (تؤدي الوظيفة التي تتلقى مدخلات خارج هذا النطاق إلى نتيجة NAN). تتراوح النتائج من -π/2 إلى π/2
أكوس () يأخذ معلمة رقمية ويعيد قوس جيب التمام للمعلمة بالتقدير الدائري. يجب أن تكون المدخلات في النطاق من -1 إلى 1 (تؤدي الوظيفة التي تتلقى المدخلات خارج هذا النطاق إلى نتيجة NAN. وتكون النتائج في النطاق من 0 إلى π
أتان () يأخذ معلمة رقمية ويعيد ظل المعلمة بالراديان. تتراوح النتائج من -π/2 إلى π/2

فيما يلي مثال لتجميع جدول لحساب الدوال المثلثية للزوايا "القياسية":

كود PHP وظيفة عرض المثلثات($func_array, $input_array) (// صدى رأس الدالة " "؛ ) صدى صوت ""; // اطبع بقية الجدول foreach($input_array كـ $input) (echo " "؛ foreach($func_array كـ $func) (صدى " "؛ ) صدى صوت ""؛ ) صدى صوت "
المعنى/الوظيفة$ func
".sprintf("%.4f",$input).""; printf("%4.4f", $func($input)); صدى "
"; ) Display_trigonometry(array("sin", "cos", "tan"), array(0, M_PI / 6, M_PI / 3, M_PI / 2, M_PI));

مثال على استخدام الدوال المثلثية في PHP

سبب الحصول على قيم مماسية كبيرة جدًا (لكن ليست لا نهائية) هو أن المقامات يجب أن تكون صفرًا نظريًا، لكنها في الواقع تختلف قليلاً عن الصفر بسبب أخطاء التقريب.

حساب الدقة التعسفية (باستخدام وظائف BC)

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

بالطبع، قد تعتمد نطاقات القيمة الدقيقة لأنواع البيانات هذه على بنية الكمبيوتر الخادم، ولكن يمكن أن تتراوح القيم الصحيحة عادةً من -2 31 -1 إلى 2 31 -1، ويمكن أن تكون أرقام الفاصلة العائمة مزدوجة الدقة تمثل أرقامًا بدقة تتراوح من 13 إلى 14 رقمًا عشريًا تقريبًا. من ناحية أخرى، لحل المشكلات التي تتطلب استخدام نطاق أوسع من التمثيل أو دقة أكبر، توفر PHP وظائف رياضية الدقة التعسفية(وتسمى أيضًا وظائف BC، والتي سميت على اسم الأداة المساعدة للحوسبة التعسفية المستندة إلى Unix).

قد لا يتم تضمين وظائف الدقة التعسفية في تجميع مترجم PHP، خاصة إذا قام المستخدم بالتجميع بنفسه، لأنه لهذا يجب على المستخدم أن يعرف أنه في مرحلة التكوين من الضروري تضمين مربع اختيار في حدود --enable-bcmath. للتحقق من توفر الوظائف المحددة، حاول تقييم التعبير bcadd("1"،"1"). إذا تلقيت رسالة خطأ تشير إلى وظيفة غير محددة، فستحتاج إلى إعادة تكوين مترجم PHP وإعادة ترجمته.

تستخدم وظائف BC السلاسل بدلاً من الأنواع الرقمية ذات الطول الثابت كمعلمات وقيم الإرجاع. نظرًا لأن طول السلاسل في PHP يقتصر فقط على مقدار الذاكرة المتوفرة، فإن الأرقام المستخدمة في الحسابات يمكن أن تكون بأي طول. تتم الحسابات الأساسية في شكل عشري وهي تشبه إلى حد كبير تلك التي يمكن لأي شخص إجراؤها بالقلم الرصاص والورق (إذا كان يمكنه العمل بسرعة كبيرة والتحلي بالصبر). تتميز وظائف الأعداد الصحيحة BC بالدقة وتسمح لك باستخدام أكبر عدد ممكن من الأرقام حسب الحاجة، بينما تقوم وظائف الفاصلة العائمة بإجراء عمليات حسابية دقيقة لعدد محدد من المنازل العشرية. معلومات عامة حول وظائف BC موضحة في الجدول أدناه:

وظائف رياضية دقيقة التعسفية (وظائف BC)
وظيفة وصف
بكاد () يقبل معلمتين من السلسلة تمثلان أرقامًا ومعلمة عددية اختيارية تشير إلى عامل القياس. إرجاع مجموع المعلمتين الأوليين كسلسلة، مع تحديد عدد المنازل العشرية في النتيجة بواسطة المعلمة التي تشير إلى عامل القياس. إذا لم يتم تحديد المعلمة التي تشير إلى عامل القياس، فسيتم استخدام عامل القياس الافتراضي
بكسوب () تشبه bcadd()، إلا أنها تُرجع نتيجة طرح المعلمة الثانية من الأولى
bcmui() يشبه bcadd()، إلا أنه يُرجع نتيجة ضرب معلماته
بي سي ديف () يشبه bcadd()، إلا أنه يُرجع نتيجة قسمة المعلمة الأولى على الثانية
بكمود () إرجاع المعامل (الباقي) لقسمة المعلمة الأولى على الثانية. نظرًا لأن القيمة المرجعة عبارة عن عدد صحيح، فإن الدالة لا تقبل معلمة تشير إلى عامل مقياس
بكبوو() يرفع المعلمة الأولى إلى الطاقة المحددة بواسطة المعلمة الثانية. يتم تحديد عدد المنازل العشرية في النتيجة بواسطة عامل القياس، إذا تم تحديده
بكسقرت () تُرجع الجذر التربيعي للمعلمة مع عدد المنازل العشرية التي تحددها قيمة عامل المقياس الاختياري
بمقياس () يضبط عامل القياس الافتراضي للاستدعاءات اللاحقة لوظيفة BC

تأخذ معظم هذه الوظائف كمعلمة أخيرة عامل مقياس اختياري (عدد صحيح)، والذي يحدد عدد المنازل العشرية التي يجب أن تحتوي عليها النتيجة. إذا لم يتم تحديد هذه المعلمة، فسيتم استخدام عامل القياس الافتراضي كعامل القياس، والذي بدوره يمكن تعيينه عن طريق استدعاء الدالة bcscale(). القيمة الافتراضية لهذه القيمة الافتراضية (أي القيمة المستخدمة إذا لم يستدعي البرنامج النصي bcscale()) يمكن أيضًا تعيينها في ملف التهيئة php.ini.

فيما يلي مثال لاستخدام دالة الدقة العشوائية لإجراء العمليات الحسابية الصحيحة بدقة. تنفيذ الكود التالي:

كود PHP لـ ($x = 1؛ $x< 25; $x++) { echo "$x= ".bcpow($x, $x)."
"; }
حساب دقيق للكميات الفلكية باستخدام وظائف BC

إذا تم استخدام نوع عدد صحيح PHP عادي لهذه الحسابات، فسيحدث تجاوز العدد الصحيح قبل وقت طويل من نهاية الحساب، وبالتالي فإن بقية الحلقة ستجري حسابات للحصول على رقم فاصلة عائمة تقريبي.

معالجة نماذج المصفوفات 1 2 3 4 5 6 7 8 9 10

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

قسمة الأعداد الصحيحة هي ناتج الجزء الصحيح من القسمة. على سبيل المثال، إذا قسمنا 5 على 2، نحصل على 2، وليس 2.5.

مع التقسيم المتبقي، كل شيء مختلف. هذا هو ناتج الباقي عند قسمته على عدد صحيح. على سبيل المثال، بقسمة نفس الخمسة، لن تحصل على 2، بل 1، لأن قسمة 5 على 2، نحصل على 2، والباقي هو 1.

كيفية القيام بتقسيم عدد صحيح في PHP

على سبيل المثال، في بايثون يتم هذا التقسيم باستخدام عامل تشغيل بسيط: "//".

وفي PHP، لن يكون الأمر بهذه السهولة، ولكن لا تزال العملية لا تتطلب معرفة فائقة باللغة.

دعونا نعطي مثالا على كيفية تنفيذ ذلك.

في PHP الإصدار السابع، تبدو الوظيفة كما يلي:

في الإصدار الأقدم، تبدو نفس الوظيفة كما يلي:

هناك أيضًا طريقة لجميع الإصدارات:

كيفية التقديم؟

على سبيل المثال، لنأخذ الوظيفة الأولى، ويتم تنفيذ جميع الوظائف الأخرى بنفس الطريقة تقريبًا.

نتيجة $ = intdiv(10, 3); صدى نتيجة $؛

تقسيم الباقي في PHP

لعرض العدد الصحيح المتبقي من القسمة في PHP، ما عليك سوى استخدام عامل التشغيل "%".

$i = 10% 3; صدى $i;

كما نرى، كل شيء بسيط للغاية ولا يتطلب تفسيرات طويلة.

أين يمكن استخدامه؟

ستكون معرفة قسمة الأعداد الصحيحة في PHP مفيدة للغاية إذا كنت بحاجة إلى مقارنة رقمين، أو إنشاء رقم مقلوب (تمرين شائع)، أو على سبيل المثال، برنامج يسمى FizzBuzz. جوهرها هو أنه عليك كتابة دورة من 1 إلى 100، والتي تقسم كل رقم على 3 و5. إذا كان الرقم مقسومًا على 3 وباقي 0، فإننا نكتب Fizz، إذا قسم على 5، ثم Buzz، و إذا قسمنا 5 و 3 وكان الباقي 0، فإننا نكتب FizzBuzz. هذه مهمة مقابلة شائعة جدًا. إذا أكملتها بنفسك، يمكنك أن تفخر بنفسك.

أو مثلا علينا أن نشتق جميع أرقامه (4، 5، 2) من الرقم 452.

خاتمة

بالطبع، تعد أقسام الأعداد الصحيحة والباقي مفيدة وشائعة جدًا؛ فهي ليست ملائمة للاستخدام كما هو الحال في بايثون، لكنها لا تزال مهمة.

أنت الآن على بعد خطوة واحدة من تعلم لغة برمجة PHP، وستقترب أكثر في المستقبل إذا عملت بنفس القدر من الجدية للتغلب على التحديات.

جميع العمليات الرياضية الأساسية متوفرة في PHP. يمكن استخدام كل من الأعداد الصحيحة والأعداد الحقيقية كمعاملات.

يعرض الجدول قائمة العوامل الحسابية:
المشغل أو العامللافتةوصف
إضافة + إضافة قيمتين
الطرح - طرح قيمة من أخرى
عمليه الضرب * ضرب قيمتين
قسم / قسمة قيمة على أخرى
الحصول على ما تبقى من القسمة % قسمة قيمة على أخرى وإرجاع الباقي (قسمة modulo)
زيادة راتب ++ اختصار لزيادة عدد بمقدار واحد
إنقاص -- اختصار لتقليل رقم بمقدار واحد
النفي الأحادي - تحويل الرقم الموجب إلى رقم سالب أو الرقم السالب إلى موجب

عوامل الطرح والضرب والقسمة والمعاملات والجمع

تُستخدم عوامل الطرح والضرب والقسمة والجمع بنفس الطريقة المستخدمة في الرياضيات. هنا يجدر الانتباه إلى مشغلي التقسيم والمودولو.

يقوم عامل القسمة (" / ") بإرجاع رقم الفاصلة العائمة، ما لم تكن القيمتان عبارة عن أعداد صحيحة (أو سلاسل يتم تحويلها إلى أعداد صحيحة) مقسمة على عدد صحيح، وفي هذه الحالة تُرجع قيمة عددية.

النتيجة 2 = النتيجة 2
"؛ صدى "النتيجة 3 = النتيجة 3 $
result4 = $result4"; ?>

في القسمة المعيارية، يتم تحويل المعاملات إلى أعداد صحيحة (مع إزالة الجزء الكسري) قبل بدء العملية. نتيجة عملية القسمة المتبقية % سيكون لها نفس علامة توزيع الأرباح:

النفي الأحادي

يُشار إلى مُعامل النفي الأحادي بالعلامة "-"، وهو يعكس معنى مُعامله الوحيد:

في هذه الحالة، ليست هناك حاجة للأقواس لأن النفي الأحادي له الأولوية القصوى، ولكنها تساعد في تنظيم التعليمات البرمجية بحيث يكون من الواضح أنه سيتم إضافة الأرقام -5 و4.

زيادة راتب

يُشار إلى عامل الزيادة بعلامة ++ ويمكن وضعه على جانبي المعامل الذي يعمل عليه. فهو يزيد هذه القيمة بمقدار واحد، تمامًا مثل إضافة واحد إلى القيمة. تعتمد النتيجة الفعلية على ما إذا تم تطبيق عامل التشغيل قبل أو بعد المعامل الذي تم تطبيقه عليه. غالبًا ما يُستخدم هذا العامل مع المتغيرات، وغالبًا ما يحدث هذا داخل الحلقات (ستتم مناقشة الحلقات لاحقًا).

بادئة شكل الزيادة

نموذج البادئة- يحدث هذا عندما يتم وضع عامل الزيادة قبل المعامل، وهذا الشكل من التدوين يعني أنه سيتم تنفيذ الزيادة أولاً: فهو يزيد من قيمة المعامل بمقدار واحد وبعد ذلك فقط يتم تنفيذ بقية التعليمات:

نموذج Postfix للزيادة

نموذج بوستفيكستتم كتابته بشكل مختلف قليلاً - تقع الزيادة في هذه الحالة بعد المعامل. في تدوين postfix، يُرجع الاستخدام الأول للمعامل قيمته الحالية، فقط بعد ذلك ستتم زيادة القيمة بمقدار واحد:

إنقاص

يُشار إلى عامل التخفيض بالعلامة --، وعلى عكس عامل الزيادة، فإنه يقلل، بدلاً من أن يزيد، قيمة معامله بمقدار واحد. يسمح التخفيض أيضًا بتدوين البادئة واللاحقة:

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

قسمة الأعداد الصحيحة هي ناتج الجزء الصحيح من القسمة. على سبيل المثال، إذا قسمنا 5 على 2، نحصل على 2، وليس 2.5.

مع التقسيم المتبقي، كل شيء مختلف. هذا هو ناتج الباقي عند قسمته على عدد صحيح. على سبيل المثال، بقسمة نفس الخمسة، لن تحصل على 2، بل 1، لأن قسمة 5 على 2، نحصل على 2، والباقي هو 1.

كيفية القيام بتقسيم عدد صحيح في PHP

على سبيل المثال، في بايثون يتم هذا التقسيم باستخدام عامل تشغيل بسيط: "//".

و في بي أتش بيلن يكون من السهل القيام بذلك، ولكن لا تزال العملية لا تتطلب معرفة فائقة باللغة.

دعونا نعطي مثالا على كيفية تنفيذ ذلك.

في بي أتش بيالإصدار السابع تبدو الوظيفة كما يلي:

Intdiv();

في الإصدار الأقدم، تبدو نفس الوظيفة كما يلي:

هناك أيضًا طريقة لجميع الإصدارات:

أرضية()؛

كيفية التقديم؟

على سبيل المثال، لنأخذ الوظيفة الأولى، ويتم تنفيذ جميع الوظائف الأخرى بنفس الطريقة تقريبًا.

نتيجة $ = intdiv(10, 3); صدى نتيجة $؛

تقسيم الباقي في PHP

لعرض العدد الصحيح المتبقي من القسمة بي أتش بييكفي فقط استخدام عامل التشغيل "%".

$i = 10% 3; صدى $i;

كما نرى، كل شيء بسيط للغاية ولا يتطلب تفسيرات طويلة.

أين يمكن استخدامه؟

معرفة قسمة الأعداد الصحيحة بي أتش بيسيكون مفيدًا جدًا إذا كنت بحاجة إلى مقارنة رقمين، أو إنشاء رقم مقلوب (تمرين شائع)، أو على سبيل المثال، برنامج يسمى FizzBuzz. جوهرها هو أنه عليك كتابة دورة من 1 إلى 100، والتي تقسم كل رقم على 3 و5. إذا كان الرقم مقسومًا على 3 وباقي 0، فإننا نكتب Fizz، إذا قسم على 5، ثم Buzz، و إذا قسمنا 5 و 3 وكان الباقي 0، فإننا نكتب FizzBuzz. هذه مهمة مقابلة شائعة جدًا. إذا أكملتها بنفسك، يمكنك أن تفخر بنفسك.

أو مثلا علينا أن نشتق جميع أرقامه (4، 5، 2) من الرقم 452.

خاتمة

بالطبع، تعد أقسام الأعداد الصحيحة والباقي مفيدة وشائعة جدًا؛ فهي ليست ملائمة للاستخدام كما هو الحال في بايثون، لكنها لا تزال مهمة.

أنت الآن على بعد خطوة واحدة من تعلم لغة البرمجة بي أتش بيوفي المستقبل سوف تصبح أقرب إذا تغلبت على الصعوبات بنفس القدر من الجدية.

العمليات مع متغيرات PHP (المشغلين)

هناك مجموعات مختلفة للتنفيذ.

العامل هو شيء يتكون من قيمة واحدة أو أكثر (تعبيرات بلغة البرمجة) يمكن تقييمها كقيمة جديدة (وبالتالي يمكن اعتبار البنية بأكملها تعبيرًا). ويترتب على ذلك أن الوظائف أو أي بنيات أخرى ترجع قيمة (على سبيل المثال، مطبعة()) هي عوامل تشغيل، على عكس جميع بنيات اللغة الأخرى (على سبيل المثال، صدى صوت())، والتي لا تُرجع شيئًا.

العمليات الحسابية في PHP

تذكر أساسيات المدرسة للحساب؟ تعمل العوامل الموضحة أدناه بنفس الطريقة.

يُرجع عامل القسمة ("/") دائمًا نوعًا حقيقيًا، حتى لو كانت القيمتان عبارة عن أعداد صحيحة (أو سلاسل يتم تحويلها إلى أعداد صحيحة). وإلا فإن النتيجة ستكون كسرية.

عملية حساب باقي القسمة " % "لا يعمل إلا مع الأعداد الصحيحة، لذا فإن تطبيقه على الكسور قد يؤدي إلى نتائج غير مرغوب فيها.

من الممكن استخدام الأقواس. إن أسبقية بعض العمليات الرياضية على غيرها والتغير في الأولويات عند استخدام الأقواس في التعبيرات الحسابية يتبعان القواعد المعتادة في الرياضيات.

عمليات الزيادة والنقصان

PHP، مثل لغة C، تدعم عوامل زيادة وتناقص البادئة وpostfix.

عوامل زيادة ونقصان Postfix

كما هو الحال في لغة C، تعمل هذه العوامل على زيادة أو تقليل قيمة المتغير، وفي التعبير تُرجع قيمة المتغير قبل التغيير. على سبيل المثال:

$أ=10;
$ب=$a++;
صدى "a=$a, b=$b"; // يطبع أ=11، ب=10

كما ترون، أولا المتغير القيمة المخصصة للمتغير ، وعندها فقط تمت زيادة الأخير. ومع ذلك، التعبير الذي تم تعيين قيمته للمتغير ، قد يكون أكثر صعوبة - على أي حال، زيادة لن يحدث إلا بعد أن يتم حسابه.

عوامل زيادة البادئة وإنقاصها

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

$أ=10;
$ب=--$a;
صدى "a=$a, b=$b"; // يطبع أ=9، ب=9

يتم استخدام عمليات الزيادة والنقصان في كثير من الأحيان في الممارسة العملية. على سبيل المثال، تحدث في أي دورة تقريبًا ل .

صدى صوت "

زيادة ما بعد الإصلاح

" ;
$أ = 5 ؛
صدى "يجب أن يكون 5:" . $أ++ . "
\ن" ؛

\ن" ؛

صدى صوت "

زيادة البادئة

" ;
$أ = 5 ؛
صدى "يجب أن يكون 6:" . ++ $أ . "
\ن" ؛
صدى "يجب أن يكون 6:" . $أ. "
\ن" ؛

صدى صوت "

تناقص ما بعد الإصلاح

" ;
$أ = 5 ؛
صدى "يجب أن يكون 5:" . $ا -- . "
\ن" ؛

\ن" ؛

صدى صوت "

إنقاص البادئة

" ;
$أ = 5 ؛
صدى "يجب أن يكون 4:" . -- $ا . "
\ن" ؛
صدى "يجب أن يكون 4:" . $أ. "
\ن" ؛
?>

عمليات السلسلة

لدى PHP عاملين للعمل مع السلاسل. الأول هو عامل التسلسل (".")، الذي يُرجع تسلسل الوسيطتين اليمنى واليسرى. والثاني هو عامل الإسناد مع التسلسل، والذي يُلحق الوسيطة اليمنى بالوسيطة اليسرى. دعونا نعطي مثالا محددا:

$a = "مرحبا" ;
$ب = $أ . "عالم!" ; // $b يحتوي على السلسلة النصية "Hello World!"

$a = "مرحبا" ;
$a .= "العالم!" ; // $a يحتوي على السلسلة النصية "Hello World!"
?>

عمليات البت

تم تصميم هذه العمليات لتشغيل (ضبط/إلغاء ضبط/فحص) مجموعات من البتات في متغير بأكمله. إن بتات العدد الصحيح ليست أكثر من أرقام فردية من نفس الرقم مكتوبة في نظام الأرقام الثنائية. على سبيل المثال، في النظام الثنائي، سيبدو الرقم 12 مثل 1100 وسيبدو 2 مثل 10، وبالتالي فإن التعبير 12|2 سيعيد لنا الرقم 14 (1110 بالتدوين الثنائي). إذا لم يكن المتغير عددًا صحيحًا، فهو كذلك
تم تقريبه أولاً، ثم تم تطبيق عوامل التشغيل التالية عليه.

لتمثيل رقم واحد، يتم استخدام 32 بت:

  • 0000 0000 0000 0000 0000 0000 0000 0000 هو صفر؛
  • 0000 0000 0000 0000 0000 0000 0000 0001 هو 1؛
  • 0000 0000 0000 0000 0000 0000 0000 0010 هو 2؛
  • 0000 0000 0000 0000 0000 0000 0000 0011 هو 3؛
  • 0000 0000 0000 0000 0000 0000 0000 0100 هو 4؛
  • 0000 0000 0000 0000 0000 0000 0000 0101 هو 5؛
  • 0000 0000 0000 0000 0000 0000 0000 1111 هو 15؛

عوامل تشغيل Bitwise:

مثال اسم نتيجة
$أ و $ب على مستوى البت "و" يتم تعيين فقط تلك البتات التي تم تعيينها في كل من $a و$b.
$ا | $ب على مستوى البت "أو" يتم تعيين تلك البتات التي تم تعيينها في $a أو $b.
$أ^$ب حصري أو يتم تعيين فقط تلك البتات التي تم تعيينها في $a فقط أو $b فقط
~$أ النفي يتم تعيين تلك البتات التي لم يتم تعيينها في $a، والعكس صحيح.
$أ<< $b تحول اليسار يتم نقل جميع بتات المتغير $a إلى مواضع $b إلى اليسار (يشير كل موضع إلى "الضرب في 2")
$أ >> $ب التحول إلى اليمين يتم إزاحة جميع بتات المتغير $a إلى مواضع $b إلى اليمين (يشير كل موضع إلى "القسمة على 2")

عمليات المقارنة

تسمح لك عوامل المقارنة، كما يوحي اسمها، بمقارنة قيمتين.

تعتبر هذه العمليات فريدة من نوعها بطريقتها الخاصة، لأنه بغض النظر عن أنواع الوسائط الخاصة بها، فإنها دائمًا ما تُرجع أحد أمرين: خطأ شنيعأو حقيقي. تقوم عمليات المقارنة بمقارنة قيمتين مع بعضهما البعض، وإذا كان الشرط صحيحا، يتم إرجاعهما حقيقي، وإذا لم يكن كذلك - خطأ شنيع.

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

راجع مقارنة المصفوفات للحصول على التفاصيل.

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

مثال اسم نتيجة
$أ == $ب يساوي حقيقيإذا كان $a يساوي $b.
$أ === $ب متساويين تمامًا حقيقيإذا كان $a يساوي $b وله نفس النوع. (أضيف في PHP 4)
$أ != $ب غير متساوي حقيقيإذا كان $a لا يساوي $b.
$أ<>$ب غير متساوي حقيقيإذا كان $a لا يساوي $b.
$أ !== $ب متطابقة ليست متساوية حقيقيإذا كان $a لا يساوي $b أو إذا كانا من أنواع مختلفة (أضيف في PHP 4)
$أ< $b أقل حقيقيإذا كان $a أقل تمامًا من $b.
$أ> $ب أكثر حقيقيإذا كان $a أكبر تمامًا من $b.
$أ<= $b أقل أو متساوية حقيقيإذا كان $a أقل من أو يساوي $b.
$أ >= $ب أكثر أو يساوي حقيقيإذا كان $a أكبر من أو يساوي $b.

العمليات المنطقية

تم تصميم العوامل المنطقية خصيصًا للعمل مع التعبيرات المنطقية وكذلك العودة خطأ شنيعأو حقيقي.

فيما يلي جدول عوامل التشغيل المنطقية لـ PHP:

تجدر الإشارة إلى أن تقييم التعبيرات المنطقية التي تحتوي على مثل هذه العوامل يبدأ دائمًا من اليسار إلى اليمين، وإذا كانت النتيجة واضحة بالفعل (على سبيل المثال، &&شيء كاذبيعطي دائما خطأ شنيع)، فسيتم إنهاء العمليات الحسابية، حتى إذا كان التعبير يحتوي على استدعاءات دالة. على سبيل المثال، في عامل التشغيل $logic = 0&&(time()>100); وظيفة قياسية وقت()لن يتم استدعاؤه أبدا.

كن حذرًا مع العمليات المنطقية - لا تنس مضاعفة الأحرف. يرجى ملاحظة أنه، على سبيل المثال، | و || - عاملان مختلفان تمامًا، أحدهما يمكنه إرجاع أي رقم، والثاني - فقط خطأ شنيعو حقيقي.

لا تعمل عوامل الزيادة (++) والتناقص (--) مع المتغيرات المنطقية.

مشغلي التكافؤ

في PHP، بدءًا من PHP4، يوجد عامل مقارنة متطابق - علامة المساواة الثلاثية === ,
أو عامل الفحص. PHP تتسامح إلى حد ما مع تحويل السلاسل ضمنيًا إلى أرقام، والعكس صحيح.
على سبيل المثال، سيطبع الكود التالي أن قيم المتغيرات متساوية:

$أ=10;
$ب="10";

وهذا على الرغم من أن المتغير يمثل عددا و - خط. الآن دعونا نلقي نظرة على مثال مختلف قليلاً:

$أ=0; // صفر
$ب=""; // سطر فارغ
if($a==$b) echo "a وb متساويان"; // طباعة "أ و ب متساويان"

بالرغم من و من الواضح أنهما ليسا متساويين حتى بالمعنى المعتاد للكلمة، فسيعلن النص أنهما متماثلان. لماذا يحدث هذا؟ النقطة المهمة هي أنه إذا كان من الممكن تفسير أحد معاملات العامل المنطقي كرقم، فسيتم التعامل مع كلا المعاملين كأرقام. في هذه الحالة، يتحول السطر الفارغ إلى 0 ، ثم تتم مقارنتها بالصفر. وليس من المستغرب أن المشغل صدى صوتيعمل.
يتم حل المشكلة عن طريق عامل التكافؤ === (المساواة الثلاثية). فهو لا يقارن بين تعبيرين فحسب، بل يقارن أيضًا بين أنواعهما. دعونا نعيد كتابة مثالنا باستخدام هذا العامل.

أخبر الأصدقاء