دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / اعداد (PHP Numbers)

اعداد (PHP Numbers)

30 دقیقه Article

اعداد در PHP: از محاسبات ساده تا علمی 🧮🔢

PHP به صورتِ بسیار هوشمند با اعداد رفتار می‌کند. شما نیازی به تعریفِ بزرگ یا کوچک بودنِ عدد ندارید، موتورِ PHP بهترین ظرفیتِ حافظه را برای آن در نظر می‌گیرد.

۱. اعدادِ صحیح (Integers)

در سیستم‌هایِ ۶۴ بیتی، PHP می‌تواند اعدادی بسیار بزرگ (حدود ۹ کوینتیلیون!) را در این قالب نگه دارد.

۲. اعدادِ اعشاری (Floats)

همان اعدادی هستند که یک نقطه در خود دارند یا به شکلِ توان دارِ علمی (7.5e3) نمایش داده می‌شوند.

متدها و چک‌کننده‌ها:

  • is_int(): آیا ورودی عدد صحیح است؟
  • is_float(): آیا عدد اعشاری است؟
  • is_numeric(): آیا اصلاً با یک عدد (یا رشته‌یِ عددی) طرف هستیم؟
  • PHP_INT_MAX: بزرگترین عدد صحیحی که سیستم شما ساپورت می‌کند.
NaN و Infinity: عملیات‌هایِ غیرممکن (مثل تقسیم بر صفر در برخی شرایط یا رادیکالِ منفی) مقادیری مثل NaN (Not a Number) یا INF برمی‌گردانند. همیشه ورودی‌ها را قبل از محاسبه چک کنید.
دقتِ Float: هرگز اعدادِ اعشاری را مستقیم با هم مقایسه نکنید (مثلاً $a == $b) چون سیستم‌هایِ کامپیوتری در ذخیره‌سازیِ دهمِ اعشارها خطایِ بسیار ریزی دارند. از توابعِ مخصوص مقایسه استفاده کنید.

تستِ عددی:

{code_block('$age = "25";\nvar_dump(is_numeric($age)); // true')}
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: کالبدشکافی زبان PHP و موتور Zend 🐘⚙️

درکِ عمیقِ PHP نیازمند آشنایی با آن چیزی است که در پشتِ صحنه اتفاق می‌افتد. PHP یک زبانِ تفسیری (Interpreted) است که توسط موتور قدرتمند Zend Engine اجرا می‌شود.

۱. چرخه عمر درخواست (Request Lifecycle)

در هر بار لود شدنِ صفحه، PHP مراحلِ زیر را طی می‌کند:

  • Lexing/Scanning: تبدیلِ کدها به توکن‌هایِ معنادار.
  • Parsing: ساختِ یک ساختارِ درختی از کدها (AST).
  • Compilation: تبدیلِ درختِ کد به OpCodes (دستورالعمل‌هایِ سطحِ پایین).
  • Execution: اجرایِ OpCodeها توسط مفسرِ Zend.

۲. مدیریت حافظه (Zend Memory Manager)

PHP برخلافِ زبان‌هایی مثل C، مدیریتِ حافظه را به صورتِ خودکار انجام می‌دهد. با استفاده از تکنیکِ Reference Counting و یک Garbage Collector هوشمند، اشیاء و متغیرهایی که دیگر استفاده نمی‌شوند را از حافظه پاک می‌کند تا سرور دچارِ کراش نشود.

۳. سیستمِ تایپِ پویا (Dynamic Typing)

در PHP، متغیرها نوعِ ثابتی ندارند. این انعطاف‌پذیری به لطفِ ساختارِ داده‌ای به نام zval (Zend Value) ممکن شده است که در هر لحظه می‌تواند اطلاعاتی درباره نوع و مقدارِ داده را در خود نگه دارد.

نکته مهندسی: برایِ افزایشِ چشمگیرِ سرعتِ برنامه‌هایِ PHP، همیشه از OPcache استفاده کنید. این قابلیت باعث می‌شود کدهایِ کامپایل شده (OpCodes) در RAM ذخیره شوند و در درخواست‌های بعدی نیاز به کامپایلِ مجدد نباشد.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تشخیص نوع عدد Easy
سوال تمرین

با استفاده از دستور is_int()، چک کنید آیا متغیر $val = 59.85 یک عددِ صحیح است یا خیر. خروجی را با var_dump نشان دهید.

پاسخ تمرین
PHP
<?php
$val = 59.85;
var_dump(is_int($val));
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.