بي الطرح. معالجة الأرقام والعمليات الحسابية

11.04.2019

من غير المرجح أن يفكر المبرمجون الذين يحتاجون إلى إجراء حسابات رقمية أو علمية أو إحصائية حساسة في لغة برمجة الويب كمرشح مقبول لهذا الدور. ولكن، على الرغم مما سبق، تقدم لغة 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.

اختيار وظيفة توليد محددة أرقام عشوائية زائفة، والذي يتم استخدامه في الدالة 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). الرموز من الألف إلى الياء. يجب أن تكون كل من القواعد الأصلية والمطلوبة ضمن نطاق 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

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

قسمة الأعداد الصحيحة هي ناتج الجزء الصحيح من القسمة. على سبيل المثال، إذا قسمنا 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 ، ثم تتم مقارنتها بالصفر. وليس من المستغرب أن المشغل صدى صوتيعمل.
يتم حل المشكلة عن طريق عامل التكافؤ === (المساواة الثلاثية). فهو لا يقارن بين تعبيرين فحسب، بل يقارن أيضًا بين أنواعهما. دعونا نعيد كتابة مثالنا باستخدام هذا العامل.

آخر تحديث: 11/1/2015

في PHP يمكننا استخدام مختلف المشغلين: حسابية، منطقية، الخ. دعونا نلقي نظرة على كل نوع من العمليات.

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

    + (عملية الإضافة)

    على سبيل المثال، $a + 5

    - (عملية الطرح)

    على سبيل المثال، $a - 5

    * (عمليه الضرب)

    على سبيل المثال، $a*5

    / (قسم)

    على سبيل المثال، $a / 5

    % (الحصول على باقي القسمة)

    على سبيل المثال: $a=12; صدى $a % 5; // يساوي 2

    ++ (زيادة/زيادة القيمة بمقدار واحد)

    على سبيل المثال، ++$أ

    من المهم أن نفهم الفرق بين التعبيرين ++$a و $a++ . على سبيل المثال:

    $أ=12; $ب=++$أ; // $b يساوي 13 echo $b;

    هنا، أولاً، يضاف واحد إلى قيمة المتغير $a، ومن ثم يتم مساواة قيمته بالمتغير $b. سيكون الأمر مختلفًا إذا بدا التعبير بالشكل التالي: $b=$a++; . هنا، أولاً كانت قيمة المتغير $a مساوية للمتغير $b، ومن ثم تم زيادة قيمة المتغير $a.

    -- (إنقاص/إنقاص القيمة بمقدار واحد)

    على سبيل المثال --$a . وأيضاً، كما في حالة الزيادة، هناك نوعان من التسجيل: --$a و $a--

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

    يساوي متغير بقيمة محددة: $a = 5

    الإضافة تليها التنازل عن النتيجة. على سبيل المثال: $a=12; $أ += 5; صدى $a؛ // يساوي 17

    الطرح يليه تعيين النتيجة. على سبيل المثال: $a=12; $a -= 5; صدى $a؛ // يساوي 7

    الضرب متبوعًا بتعيين النتيجة: $a=12; $a *= 5; صدى $a؛ // يساوي 60

    القسمة متبوعة بتعيين النتيجة: $a=12; $أ /= 5; صدى $a؛ // يساوي 2.4

    قم بتوصيل الصفوف وتعيين النتيجة. ينطبق على سطرين. إذا كانت المتغيرات لا تخزن سلاسل، بل أرقامًا على سبيل المثال، فسيتم تحويل قيمها إلى سلاسل ثم يتم تنفيذ العملية: $a=12; $أ .= 5; صدى $a؛ // يساوي 125 // مطابق لـ $b="12"; $ب .="5"; // يساوي 125

    الحصول على باقي القسمة ومن ثم تعيين النتيجة: $a=12; $a %= 5; صدى $a؛ // يساوي 2

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

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

    يقارن عامل المساواة بين قيمتين، وإذا كانتا متساويتين، فسيتم إرجاع صحيح، وإلا فسيتم إرجاع خطأ: $a == 5

    يقارن عامل الهوية أيضًا قيمتين، وإذا كانتا متساويتين، يُرجع صحيحًا، وإلا يُرجع خطأ: $a === 5

    يقارن بين قيمتين، وإذا لم تكونا متساويتين، فسيتم إرجاع صحيح، وإلا فسيتم إرجاع خطأ: $a != 5

    يقارن بين قيمتين، وإذا لم تكونا متساويتين، فسيتم إرجاع صحيح، وإلا فسيتم إرجاع خطأ: $a !== 5

    يقارن بين قيمتين، وإذا كانت الأولى أكبر من الثانية، فسيتم إرجاع صحيح، وإلا فسيتم إرجاع خطأ: $a > 5

    يقارن قيمتين، وإذا كانت الأولى أقل من الثانية، فسيتم إرجاع صحيح، وإلا فسيتم إرجاع خطأ: $a< 5

    يقارن بين قيمتين، وإذا كانت الأولى أكبر من أو تساوي الثانية، فسيتم إرجاع صحيح، وإلا فسيتم إرجاع خطأ: $a >= 5

    يقارن بين قيمتين، وإذا كانت الأولى أقل من أو تساوي الثانية، فسيتم إرجاع صحيح، وإلا فسيتم إرجاع خطأ: $a<= 5

عامل المساواة والهوية

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

من الواضح أن المتغيرات تخزن قيمًا مختلفة من أنواع مختلفة. ولكن عند مقارنتها، سيتم تخفيضها إلى نفس النوع - رقمي. وسيتم تقليل المتغير $a إلى الرقم 22. وفي النهاية، سيكون كلا المتغيرين متساويين.

أو على سبيل المثال، ستكون المتغيرات التالية أيضًا متساوية:

$أ = خطأ؛ $ب = 0;

لتجنب مثل هذه المواقف، يتم استخدام عملية التكافؤ، والتي تأخذ في الاعتبار ليس فقط القيمة، ولكن أيضًا نوع المتغير:

$a = "22a"; $ب = 22؛ if($a===$b) echo "يساوي"; آخر صدى "غير متساو"؛

الآن لن تكون المتغيرات متساوية.

تعمل عوامل المتباينة != و !== بشكل مشابه.

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

تُستخدم العمليات المنطقية عادةً للجمع بين نتائج عمليتين للمقارنة. على سبيل المثال، نحتاج إلى تنفيذ إجراء معين إذا تحققت عدة شروط. تتوفر العمليات المنطقية التالية:

    إرجاع صحيح إذا كانت كلتا المقارنتين صحيحتين، وإلا فسيتم إرجاع خطأ: $a == 5 && $b = 6

    مشابه للعملية &&: $a == 5 و $b > 6

    يُرجع صحيحًا إذا كانت عملية مقارنة واحدة على الأقل تُرجع صحيحًا، وإلا تُرجع خطأ: $a == 5 || $ب = 6

    مشابهة للعملية || : $أ< 5 or $b > 6

    يُرجع صحيحًا إذا كانت عملية المقارنة تُرجع خطأ: !($a >= 5)

    يُرجع صحيحًا إذا كانت إحدى القيم صحيحة. إذا كان كلاهما صحيحًا أو لم يكن أي منهما صحيحًا، فسيتم إرجاع خطأ. على سبيل المثال: $a=12; $ب=6; إذا($a xor $b) echo "صحيح"; وإلا صدى "خطأ"؛

    هنا ستكون نتيجة العملية المنطقية خاطئة لأن كلا المتغيرين لهما قيمة محددة. دعونا نغير الرمز:

    $أ=12; $ب=NULL; إذا($a xor $b) echo "صحيح"; وإلا صدى "خطأ"؛

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

عمليات البت

يتم تنفيذ عمليات البت على البتات الفردية من الرقم. يتم اعتبار الأرقام في التمثيل الثنائي، على سبيل المثال، 2 في التمثيل الثنائي هو 010، الرقم 7 هو 111.

    & (الضرب المنطقي)

    يتم إجراء الضرب بالبت، وإذا كان كلا المعاملين لهما قيم بت تساوي 1، فإن العملية ترجع 1، وإلا يتم إرجاع الرقم 0 على سبيل المثال: $a1 = 4; //100 $b1 = 5; //101 صدى $a1 & $b1; // يساوي 4

    هنا الرقم 4 في النظام الثنائي هو 100، والرقم 5 هو 101. اضرب الأرقام بالبت واحصل على (1*1، 0*0، 0*1) = 100، أي الرقم 4 بالتنسيق العشري.

    | (إضافة منطقية)

    على غرار الضرب المنطقي، يتم تنفيذ العملية أيضًا على أرقام ثنائية، ولكن الآن يتم إرجاع رقم واحد إذا كان هناك رقم واحد على الأقل في رقم معين يحتوي على رقم واحد. على سبيل المثال: $a1 = 4; //100 $b1 = 5; //101 صدى $a1 | $b1; // يساوي 5

    ~ (النفي المنطقي)

    تقلب جميع البتات: إذا كانت قيمة البت 1، فإنها تصبح صفرًا، والعكس صحيح. $ب = 5؛ صدى ~$ب;

    س<

    x >>y - يقوم بإزاحة الرقم x إلى اليمين بأرقام y. على سبيل المثال، 16 >>1 يزيح 16 (وهو 10000 في النظام الثنائي) مكانًا واحدًا إلى اليمين، مما يؤدي إلى 1000 أو 8 في النظام العشري

سلاسل مترابطة

يتم استخدام عامل النقطة لتسلسل السلاسل. على سبيل المثال، دعونا نربط عدة خطوط:

$a="مرحبا"; $b="العالم"; صدى $أ . $ب. "!"؛

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

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

العمليات الحسابية في لغة php

أعتقد أن هؤلاء المشغلين لا يحتاجون إلى الكثير من الشرح. وسأقدم مثالا على استخدام كل واحد منهم:

\$num2 = ".$num2; // مثال على الجمع:صدى صوت "
\$num1 + \$num2 = ". ($num1 + $num2); // مثال على الطرح:صدى صوت "
\$num1 - \$num2 = ". ($num1 - $num2); // مثال الضرب:صدى صوت "
\$num1 * \$num2 = ".$num1 * $num2; // مثال على القسمة:صدى صوت "
\$num1: \$num2 = ".$num1 / $num2; // مثال على باقي القسمة:صدى صوت "
\$num1 % \$num2 = ". $num1 % $num2; // مثال على الزيادة في شكل البادئة:صدى صوت "
++\$num1 = ".++$num1; //الآن $num1 = 11 $num1=10; // القيمة الأولية المعينة // مثال على الزيادة في نموذج بادئة ما بعد:صدى صوت "
\$num1++ = ".$num1++; // الآن $num1 = 11 $num1=10; // تم تعيين القيمة الأصلية // مثال على التناقص في شكل البادئة:صدى صوت "
--\$num1 = ".--$num1; $num1=10; // مثال على التناقص في شكل ما بعد البادئة:صدى صوت "
\$num1-- = ".$num1--; ?>

نتيجة تنفيذ الكود أعلاه:

$num1 = 10
$num2 = 7
$num1 + $num2 = 17
$num1 - $num2 = 3
$num1 * $num2 = 70
$num1: $num2 = 1.42857142857
$num1 % $num2 = 3
+$num1 = 11
$num1++ = 10
--$num1 = 9
$num1-- = 10

الفرق بين البادئة ونموذج ما بعد البادئة:

  • في شكل بادئة(++ أمام المتغير) يتم أولاً زيادته بمقدار واحد، ثم تتم طباعة النتيجة
  • في شكل ما بعد البادئة(++ يأتي بعد المتغير) يتم عرض النتيجة أولاً، ثم تتم زيادتها

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

// تعيين قيم للمتغيرات:$num1 = 10; $num2 = 7; $rez = ++$num1 + $num2; // ستكون النتيجة 18صدى صوت "
\$rez = ".$rez; // قم بتعيين $num1 للقيمة الأولية:$num1 = 10; $rez = $num1++ + $num2; // ستكون النتيجة 17صدى صوت "
\$rez = ".$rez; // يمكن أيضًا تطبيق العمليات ++ و- على السلاسل$str = "اي بي سي"; صدى صوت "
".++$str; // ستكون النتيجة السلسلة "abd" ?>

ومن الجدير بالذكر أنه عند إضافة المتغيرات، يمكنك استخدام نوعين من السجلات:

  • $num1 = $num1 + $num2 - الإدخال العادي؛
  • $num1 += $num2 هو تدوين مختصر. وستكون نتيجة هذه العمليات هي نفسها. يمكن أيضًا استخدام التدوين المختصر مع عمليات الطرح والضرب.

عوامل المقارنة في PHP

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

لا يوجد شيء معقد هنا، المبدأ هو نفسه كما هو الحال في الرياضيات. الخصوصية الوحيدة هي أن الصواب هو 1، والخطأ هو 0. دعونا نعطي مثال مفصلفي PHP:

// تعيين قيم للمتغيرات:$num1 = 10; $num2 = 7; صدى "\$num1 > \$num2 = ". ($num1 > $num2); // احصل على 1 (10 > 7 - صحيح)صدى "\$num1 //الحصول على 0 (10 // يمكنك كتابتها بشكل أبسط:صدى صوت "
10 // 0 صدى "
20 // 0 صدى "
1 == 1 = ". (1 == 1)؛ // 1 صدى "
0 == \"\" = ". (0 == ""); // 1 صدى "
0 === 0 = ".(0 === 0); // 1 صدى "
0 === \"\" = ". (0 === ""); // 0 صدى "
صحيح = ". صحيح؛ // 1 صدى "
false = ". false; // 0 ?>

ملحوظة:

  • إذا كان خطأ، فلن يتم إخراج 0
  • يُرجع عامل التكافؤ الرقم 1 فقط في حالة وجود تطابق تام. على سبيل المثال، 0 == "" صحيح، لكن 0 === "" لم يعد صحيحًا، نظرًا لعدم وجود تطابق تام.