اعداد (PHP Numbers)
اعداد در PHP: از محاسبات ساده تا علمی 🧮🔢
PHP به صورتِ بسیار هوشمند با اعداد رفتار میکند. شما نیازی به تعریفِ بزرگ یا کوچک بودنِ عدد ندارید، موتورِ PHP بهترین ظرفیتِ حافظه را برای آن در نظر میگیرد.
۱. اعدادِ صحیح (Integers)
در سیستمهایِ ۶۴ بیتی، PHP میتواند اعدادی بسیار بزرگ (حدود ۹ کوینتیلیون!) را در این قالب نگه دارد.
۲. اعدادِ اعشاری (Floats)
همان اعدادی هستند که یک نقطه در خود دارند یا به شکلِ توان دارِ علمی (7.5e3) نمایش داده میشوند.
متدها و چککنندهها:
is_int():آیا ورودی عدد صحیح است؟is_float():آیا عدد اعشاری است؟is_numeric():آیا اصلاً با یک عدد (یا رشتهیِ عددی) طرف هستیم؟PHP_INT_MAX:بزرگترین عدد صحیحی که سیستم شما ساپورت میکند.
NaN (Not a Number) یا INF برمیگردانند. همیشه ورودیها را قبل از محاسبه چک کنید.
تستِ عددی:
{code_block('$age = "25";\nvar_dump(is_numeric($age)); // true')}بخش تخصصی: کالبدشکافی زبان 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) ممکن شده است که در هر لحظه میتواند اطلاعاتی درباره نوع و مقدارِ داده را در خود نگه دارد.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
با استفاده از دستور is_int()، چک کنید آیا متغیر $val = 59.85 یک عددِ صحیح است یا خیر. خروجی را با var_dump نشان دهید.
<?php
$val = 59.85;
var_dump(is_int($val));
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.