معرفی کامل انواع داده در PHP و آموزش استفاده از آنها
در این مقاله میخوانید
آیا با انواع داده در زبان برنامهنویسی PHP آشنا هستید؟ مانند تمامی زبانهای برنامهنویسی، در PHP هم از دیتاهای مختلفی برای دستهبندی اطلاعات استفاده میشود. درحقیقت، این نکته بسیار مهم است که از چه نوع دادهای در PHP استفاده میکنید؛ زیرا این دیتاها هستند که تعیین میکنند چه مقادیری از اطلاعات را به آن اختصاص دهید و چه کارهایی را میتوانید روی آن انجام دهید. در این مقاله قصد داریم انواع دادههای مهم مختص به زبان برنامهنویسی PHP را معرفی و بررسی کنیم، پس تا پایان همراه ما باشید.
مقدمهای بر انواع داده در PHP
یکی از روشهای درک عمیق دادهها، درنظرگرفتن انواع مختلف آنهاست که در دنیای واقعی بهکار میبریم؛ مانند دو نوع مختلف از اعداد و کلمات. این دو نوع داده به روشهای مختلفی کار میکنند. برای مثال، وقتی عدد ۳ را به ۴ اضافه میکنیم، عدد ۷ حاصل میشود؛ درحالیکه وقتی کلمات ستاره و ماهی باهم ترکیب شوند، کلمه ستاره دریایی بهدست میآید. اگر بررسی و ارزیابی انواع دادههای مختلف را آغاز کنیم (مانند ترکیب اعداد و کلمات)، آنچه حاصل میشود، کمتر معنا پیدا میکند. بهعنوان مثال، برای معادله زیر پاسخی وجود ندارد:
'sky' + 8
برای کامپیوترها، هر نوع داده مانند کلمات و اعداد را میتوان کاملاً متفاوت از هم تصور کرد. بههمیندلیل، باید مراقب نحوه استفاده از آنها برای تخصیص مقادیر و نحوه دستکاریشان باشید.
در مقالهی زیر میتوانید آموزش تغییر نسخه PHP و معرفی نسخههای مختلف آن را بخوانید.
کار با انواع دادهها در PHP
PHP زبانی Loosely Typed است؛ یعنی بهطور پیشفرض اگر مقدار داده واردشده با نوع دیتا مدنظر مطابقت نداشته باشد، PHP سعی میکند درصورت امکان، مقدار داده واردشده را تغییر دهد تا با نوع آن دیتا تطابق پیدا کند. این حالت Type Juggling پیاچپی نام دارد. برای نمونه، تابعی که انتظار String خاصی را دارد؛ اما درعوض عددی صحیح با مقدار ۲ دریافت میکند، PHP مقدار ورودی را به نوع String موردانتظار با مقدار «۲» تغییر میدهد.
در PHP میتوان Strict Mode را براساس هر فایل فعال کرد. این کار انواع دادهها را در کد کنترلشده اعمال میکند. این در حالی است که امکان استفاده از بستههای کد اضافی هم فراهم است؛ اما احتمال دارد به انواع ددادههای Strict پایبند نباشد. نوع Strict در بالای یک فایل اعلام میشود:
<?php declare(strict_types=1); ...
در حالت Strict، فقط مقداری پذیرفته میشود که دقیقاً با اعلان نوع دیتا مطابقت دارد؛ درغیراینصورت، TypeError نمایش داده میشود. تنها استثنای این قانون آن است که یک مقدار int یک اعلان نوع float را ارسال میکند. درادامه، انواع داده زبان برنامهنویسی PHP را معرفی میکنیم.
اعداد
هر عددی که در PHP وارد کنید، بهعنوان یک عدد تعبیر میشود. شما به اعلام نوع دیتایی که وارد میکنید، نیازی ندارید. PHP هر عددی که بدون اعشار نوشته شود، بهعنوان Integer (مانند ۱۳۸) در نظر میگیرد و هر عددی که با اعشار نوشته شده باشد، بهعنوان Float (مانند ۱۳۸.۰) در نظر میگیرد.
1. اعداد صحیح (Integers)
مانند ریاضیات، اعداد صحیح در برنامهنویسی کامپیوتر اعداد کاملی هستند که میتوانند مثبت یا منفی یا ۰ باشند (…، ۱-، ۰، ۱، …). هر عدد صحیح را میتوان با int نامگذاری کرد. مانند سایر زبانهای برنامهنویسی، نباید از کاما در اعداد چهاررقمی یا بیشتر استفاده کنید؛ بنابراین، برای نشاندادن عدد ۱۰۰۰ در برنامه خود، آن را بهصورت عادی فقط ۱۰۰۰ بنویسید.
میتوانیم یک عدد صحیح را بهشکل زیر بنویسیم:
echo -25;
که خروجی آن بهشکل زیر نمایش داده میشود:
Output -25
همچنین، میتوانیم متغیری را تعریف کنیم که در این مورد نمادی عددی است و از آن استفاده یا آن را دستکاری میکنیم؛ مانند:
$my_int = -25; echo $my_int;
که خروجی بهشکل زیر نمایش داده میشود:
Output -25
علاوهبراین، میتوانیم به روش زیر با اعداد صحیح در PHP محاسبات ریاضی را هم انجام دهیم:
$int_ans = 116 - 68; echo $int_ans;
که خروجی بهشکل زیر نمایش داده میشود:
Output 48
از اعداد صحیح میتوان به روشهای مختلفی در برنامههای PHP استفاده کرد. با یادگیری بیشتر این زبان برنامهنویسی، فرصتهای زیادی برای کار با اعداد صحیح و درک بیشتر این نوع داده خواهید داشت.
چگونه در هاست ابری مشخصات php سرور را بررسی کنیم؟ آموزش آن را در مقالهی زیر بخوانید.
2. اعداد اعشاری (Floating-Point)
در PHP اعداد اعشاری یک عدد ممیز شناور یا یک عدد صحیح شناور نام دارند. این یعنی که میتوانند یک عدد گویا یا یک عدد غیرمنطقی باشند؛ بههمیندلیل، اعداد ممیز شناور میتوانند اعدادی باشند که شامل بخش کسری مانند ۹.۰ یا ۱۱۶.۴۲- هستند.
همانند حالتی که با عدد صحیح انجام دادیم، میتوانیم عدد اعشاری را به روش زیر وارد کنیم:
echo 17.3;
که خروجی بهشکل زیر نمایش داده میشود:
Output 17.3
همچنین، میتوانیم در ابتدا بهجای echo، متغیر مخفف اعشار را مانند روش زیر وارد کنیم:
$my_flt = 17.3; echo $my_flt;
که خروجی بهشکل زیر نمایش داده میشود:
Output 17.3
و درست مانند اعداد صحیح، در زبان برنامهنویسی PHP میتوانیم با اعشارها نیز محاسبات ریاضی انجام دهیم:
$flt_ans = 564.0 + 365.24; echo $flt_ans;
که خروجی بهشکل زیر نمایش داده میشود:
Output 929.24
فراموش نکنید در اعداد صحیح و اعداد اعشاری، ۳ برابر ۳.۰ نیست؛ زیرا ۳ به یک عدد صحیح (Integer) و ۳.۰ به یک عدد شناور (Float) اشاره میکند. این ممکن است نحوه عملکرد برنامه شما را تغییر دهد. کار با اعداد در زبان برنامهنویسی برای انجام محاسبات یا شمارش اقلام یا پول و محاسبه گذر زمان مفید است.
رشتهها یا دنبالهها (Strings)
هر String داده طولانی (دنباله) از یک یا چند کاراکتر تشکیل شده و ممکن است حاوی حروف و اعداد و نمادها باشند. این دنباله در داخل علامت نقلقول، یعنی گیومههای تکی (”) یا دو گیومه (” “) قرار میگیرند:
echo 'This is a 47 character string in single quotes.' echo "This is a 47 character string in double quotes."
هر دو این خط برنامه، مقدار خروجی خود را بهشکل زیر نمایش میدهند:
OutputThis is a 47 character string in single quotes. This is a 47 character string in double quotes.
از نقلقولهای تکی یا دوتایی میتوانید استفاده کنید؛ اما تصمیم شما هرکدام باشد، باید در برنامهای سازگار با آن قرار بگیرد. برای مثال، برنامه «Hello, World!» نشان میدهد که چگونه یک رشته میتواند در برنامهنویسی PHP استفاده شود؛ زیرا کاراکترهایی که عبارت Hello, World! را تشکیل میدهند، یک رشته هستند:
echo "Hello, World!";
مانند سایر انواع دادهها، رشتهها را میتوانیم در متغیرها ذخیره کنیم و نتایج را بهدست آوریم که بهشکل زیر است:
$hw = "Hello, World!" echo $hw;
بنابراین، درهرصورت خروجی یکسانی حاصل میشود:
Output Hello, World!
مانند اعداد، عملیاتهای زیادی وجود دارند که میتوانیم روی رشتهها در برنامههایمان اعمال کنیم تا با دستکاری آنها، به نتایجی دست پیدا کنیم که بهدنبال آن هستیم. رشتهها برای انتقال اطلاعات ازطریق برنامه به کاربر و برعکس انتقال اطلاعات ازطریق کاربر به برنامه مهم هستند.
Booleanها
نوع دیتا Boolean یا Bool میتواند یکی از دو مقدار درست (True) یا نادرست (False) باشد. Booleanها برای نشاندادن مقادیر صحیح مرتبط با شاخه منطقی ریاضیات استفاده میشوند. هنگام اعلام یک مقدار Boolean، از علامت نقلقول استفاده نکنید؛ زیرا هرچیزی در گیومه یک رشته فرض میشود.
زبان برنامهنویسی PHP هنگام اعلان Boolean به نوشتار نمونه اهمیتی نمیدهد. برای مثال، True ،TRUE ،true و TruE همگی را یکسان ارزیابی میکند؛ اما اگر از راهنمای ارائهشده PHP-FIG پیروی کنید، باید همه مقادیر برای true یا false با حروف کوچک نوشته شده باشند.
بسیاری از محاسبات در ریاضی با درست (True) یا نادرست (False) ارزیابی میشوند. درادامه، برخی از نمونههای صحیح و غلط آورده شده است:
1. برای نشاندادن بزرگتر از:
- 500 > 100 True (درست)
- 1 > 5 False (نادرست)
2. برای نشاندادن کمتر از:
- 200 < 400 True (درست)
- 4 < 2 False (نادرست)
3. برای نشاندادن برابر با:
- 5 = 5 True (درست)
- 500 = 400 False (نادرست)
مانند هر نوع داده دیگری، میتوانیم یک مقدار Boolean را در یک متغیر ذخیره کنیم. برخلاف اعداد یا استرینگها، echo نمیتواند برای مقدار خروجی استفاده شود؛ زیرا یک مقدار Boolean true به استرینگ «۱» تبدیل میشود؛ درحالیکه یک Boolean false به “” (یک استرینگ خالی) تبدیل میشود.
این حالت اجازه میدهد تا «Type Juggling» را به متغیری به عقب و جلو بین مقادیر Boolean و استرینگ تبدیل کند. برای خروجی مقدار یک Boolean چندین گزینه داریم. برای خروجی نوع دیتا بههمراه مقدار یک متغیر، از var_dump و برای خروجی استرینگ با مقدار متغیر، از var_export استفاده میکنیم:
$my_bool = 4 > 3; echo $my_bool; var_dump($my_bool); var_export($my_bool);
ازآنجاکه ۴ بزرگتر از ۳ است، باید خروجی زیر را دریافت کنیم:
Output 1 bool(true) true
خط echo، بولی True را به استرینگ ۱ تبدیل میکند. var_dump نوع متغیر Bool را همراه با مقدار True در خروجی و var_export هم رشتهای با مقدار True را در خروجی ارائه میدهد.
NULL (خالی)
نوع دیتا NULL برای نشاندادن نبودن مقدار است و فضا را برای یک متغیر رزرو میکند. این دیتا به PHP اجازه میدهد تا از متغیر احتمالی آگاه باشد؛ اما همچنان آن را تنظیمنشده در نظر بگیرد. در این نوع زبان برنامهنویسی، تنها مقدار ممکن و پذیرفتنی دیگر از نوع NULL، نوع null است که به حروف کوچک و بزرگ حساس نیست.
هنگامی که زبان برنامهنویسی PHP سعی میکند به متغیری اعلاننشده دسترسی پیدا کند، مانند زیر هشدار ارسال میکند:
echo $name;
درنتیجه، هشدار میدهد که متغیر تنظیم نشده است؛ اما کد به پردازش ادامه میدهد:
Output PHP Warning: Undefined variable $name
یکی از راههای رایج برای جلوگیری از این هشدار آن است که بررسی کنید متغیر با استفاده از تابع isset تنظیمشده باشد. برای این کار، مانند زیر عمل کنید:
if (isset($name)) { echo $name; }
با این کار، echo کاملاً حذف میشود و هشداری ارسال نمیشود. راه دوم برای جلوگیری از این نوع خطا، تنظیم مقدار نگهدارنده برای متغیری مانند یک رشته خالی است:
$name = ''; echo "Hello ".$name;
اکنون، کلمه Hello بدون name$ نمایش داده میشود؛ چون مقدار name$ استرینگ خالی است و نتیجه زیر حاصل میشود:
Output Hello
این راهحلها معتبر و مفید هستند. بااینحال، وقتی مقدار name$ را روی استرینگ خالی قرار میدهیم، درواقع آن مقدار را تنظیم کردهایم؛ یعنی:
$name = ''; if (isset($name)) { echo "Hello ".$name; }
نهایتاً Hello بدون name نیز نمایش داده میشود؛ زیرا مقدار name$ روی String خالی تنظیم شده بود:
Output Hello
در اینجا نیز مانند بسیاری از چالشها، راهحلهای متعددی وجود دارد. یکی از راهحلها این است که متغیر را روی مقدار null قرار دهید. این کار فضا را برای آن متغیر نگه میدارد یا رزرو میکند و از خطاهای زبان PHP جلوگیری میکند. بااینحال، همچنان متغیر «not set» را در نظر میگیرد؛ پس به روش زیر عمل کنید:
$name = null; echo $name; if (isset($name)) { echo "Hello ".$name; }
در این روش، متغیر قبلاً Declared است؛ بنابراین، هنگام تلاش echo برای دسترسی به متغیر هیچ خطایی برای نمایش وجود نخواهد داشت. همچنین، echo چیزی ارائه نمیدهد؛ زیرا مقداری برای آن وجود ندارد. این حالت بهعنوان پیغام false هم ارزیابی میشود؛ چون متغیر name$ مجموعه در نظر گرفته نمیشود.
میتوانیم از var_dump استفاده کنیم تا ببینیم PHP چگونه متغیر NULL را ارزیابی میکند. برای این کار، مانند مورد زیر عمل کنید:
$name = null; var_dump($name);
نتیجه زیر به ما نشان میدهد که متغیر از نوع NULL است:
Output NULL
درحالیکه استفاده از متغیر NULL درمقایسهبا دیگر متغیرها کمتر است، اغلب بهعنوان نوع غیربرگشتی یک تابع استفاده میشود که فقط یک عملکرد را انجام میدهد و مقدار بازگشتی ندارد.
آرایهها (Arrays)
درواقع، هر آرایه PHP نقشهای مرتبشده از آن است. نقشه نوعی داده است که مقادیر را به کلیدهای «maps» مرتبط میکند. این نوع داده کاربردهای مختلفی دارد و میتوان آن را بهعنوان array ،list ،hash table ،dictionary ،collection و… در نظر گرفت. علاوهبراین، ازآنجاکه مقادیر آرایه در زبان برنامهنویسی PHP میتواند آرایههای دیگری هم دربر داشته باشد، آرایههای چندبعدی امکانپذیر است. این آرایهها عبارتاند از:
1. آرایههای فهرستبندیشده
این مدل در سادهترین شکل خود، آرایهای با یک شاخص یا Key خواهد بود. اگر کلیدهایی را مشخص نکرده باشید، PHP بهطور خودکار کلید عددی بعدی را برایتان تولید میکند. بهطور پیشفرض، کلیدهای آرایهای با ۰ نشان داده میشوند. این یعنی اولین کلید ۰ است، نه ۱. علاوهبراین، هر عنصر یا مقداری هم که در داخل آرایه است، میتواند بهعنوان بخش نامیده شود. هر آرایه را میتوان به یکی از دو روش زیر تعریف کرد:
()array: اولین کاربرد ساختار زبان ()array است که با استفاده از پرانتز فهرست آیتمها جدا میشود و از کاما برای تمایز بهره میبرد. در این روش، یک آرایه از اعداد صحیح بهصورت زیر تعریف میشود:
array(-3, -2, -1, 0, 1, 2, 3)
[]brackets: روش دوم و رایجتر برای تعریف آرایه ازطریق نوشتن آرایه کوتاه با استفاده از براکتهای مربع (کروشهها) است. در این روش آرایهای از اعداد اعشار (شناور) بهصورت زیر تعریف میشوند:
[3.14, 9.23, 111.11, 312.12, 1.05]
همچنین، در این روش میتوانیم آرایهای از استرینگها را تعریف کنیم و آرایهای را به یک متغیر اختصاص دهیم؛ مانند نمونه زیر:
$sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'];
در اینجا باردیگر مانند قبل، نمیتوانیم از echo برای خروجی کل آرایه استفاده کنیم؛ اما میتوانیم بهجای آن از var_export یا var_dump استفاده کنیم:
var_export($sea_creatures); var_dump($sea_creatures);
خروجی نشان میدهد که آرایه به این سبک از Keys استفاده میکند. به خروجی زیر توجه کنید:
Outputarray ( 0 => 'shark', 1 => 'cuttlefish', 2 => 'squid', 3 => 'mantis shrimp', ) array(4) { [0]=> string(5) "shark" [1]=> string(10) "cuttlefish" [2]=> string(5) "squid" [3]=> string(13) "mantis shrimp" }
ازآنجاکه آرایه شاخص اولیه ۰ دارد، var_dump آرایهای نمایهشده با کلیدهای عددی بین ۰ تا ۳ را نشان میدهد. هر کلید عددی با یک مقدار رشته مطابقت دارد. عنصر اول کلید ۰ و مقدار shark دارد. تابع var_dump جزئیات بیشتری درباره هر آرایه به ما میدهد؛ یعنی ۴ مورد در آرایه وجود دارد و مقدار اولین مورد یک رشته با طول ۵ کاراکتر است.
Key آرایهای فهرستبندیشده محسوب میشود و ممکن است هنگام تنظیم مقدار مشخص شود. بااینحال، معمولاً Key هنگام استفاده از کلید نامگذاریشده مشخص میشود.
چطور خطای دیتابیس را در وردپرس رفع کنیم؟ در مقالهی زیر بخوانید.
2. آرایههای انجمنی (Associative Arrays)
Associative Arrays آرایههایی با کلیدهای نامگذاریشده هستند و معمولاً برای نگهداری دادههای مرتبط استفاده میشوند؛ مانند اطلاعات موجود در شناسهای خاص. آرایه انجمنی بهشکل زیر است:
['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean']
لازم است بدانید که عملگر پیکان دوگانه <= برای جداکردن رشتهها استفاده میشود و ۲ حالت دارد:
1. کلمات سمت چپ این علامت <= Key هستند. Key میتواند شامل یک عدد صحیح یا یک استرینگ باشد. برای درک بیشتر، کلیدهای آرایه قبلی عبارتاند از: ‘name’, ‘animal’, ‘color’, ‘location’.
2. کلمات سمت راست این علامت <= مقادیر هستند. Values میتوانند از هر نوع دادهای ازجمله آرایههای دیگر تشکیل شوند. مقادیر موجود در آرایه قبلی عبارتاند از: ‘Sammy’, ‘shark’, ‘blue’, ‘ocean’.
بهعنوان مثال، برای نمونه آرایه فهرستبندیشده آرایه انجمنی را در یک متغیر ذخیره کنید تا جزئیات خروجی را ببینید:
$sammy = ['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean']; var_dump($sammy);
نتایج این آرایه را دارای ۴ عنصر توصیف میکند. String برای هر کلید داده میشود؛ اما فقط مقدار و نوع رشته را با تعداد کاراکتر مشخص میکند:
Outputarray(4) { ["name"]=> string(5) "Sammy" ["animal"]=> string(5) "shark" ["color"]=> string(4) "blue" ["location"]=> string(5) "ocean" }
Associative Arrays به ما امکان میدهند با دقت بیشتری به هر عنصر دسترسی داشته باشیم. اگر بخواهیم رنگ Sammy را جدا کنیم، بهشکل زیر با اضافهکردن براکتهای مربع (کروشهها) حاوی نام عنصر کلیدی بعد از آرایه متغیر، میتوانیم این کار را انجام دهیم:
echo $sammy['color'];
در این حالت، خروجی بهشکل زیر حاصل میشود:
Output blue
ازآنجاکه آرایهها نقشه key-value را برای ذخیره دادهها ارائه میکنند، میتوانند عناصر مهمی در برنامه نوشتهشده شما با استفاده از زبان برنامهنویسی PHP باشند.
عناصر ثابت (Constants)
عنصر ثابت نوعی داده جداگانه نیست؛ اما متفاوت از سایر انواع دیتاها عمل میکند. همانطورکه از نام عناصر ثابت پیداست، دیتاهایی هستند که در ابتدا یک بار در برنامه اعلام میشوند و پسازآن در طول برنامه تغییر نمیکنند. نام Constants باید همیشه با حروف بزرگ نوشته شود و با علامت دلار شروع نشود. یک ثابت را مثل نمونه زیر میتوان با استفاده از تابع define یا کلمه کلیدی const اعلام کرد:
define('MIN_VALUE', 1); const MAX_VALUE = 10;
تابع define دو پارامتر دارد: اولی یک String است که نام ثابت را دربر میگیرد و دومی مقداری است که باید نسبت داده شود. این تابع میتواند هریک از مقادیر نوع دیتایی باشد که قبلاً توضیح داده شد. کیبورد const به ثابت اجازه میدهد با استفاده از علامت مساوی، مقداری را به همان روشی که به انواع دیتاهای دیگر تخصیص میداد، برای این دیتا هم اختصاص دهد.
شما میتوانید یک ثابت را در برنامه خود به همان روشی بهکار ببرید که سایر متغیرها استفاده کردند، با این تفاوت که آنها در یک استرینگ گیومه (نقلقول) دوتایی تفسیر نمیشوند:
echo "The value must be between MIN_VALUE and MAX_VALUE"; echo "The value must be between ".MIN_VALUE." and ".MAX_VALUE;
ازآنجاکه ثابتها تفسیر نمیشوند، خروجی این خطوط متفاوت است و بهشکل زیر درمیآید:
OutputThe value must be between MIN_VALUE and MAX_VALUE The value must be between 1 and 10
نتیجهگیری
زبان برنامهنویسی PHP نیز مانند دیگر زبانهای برنامهنویسی دیتاهای مختلفی دارد که هرکدام از آنها کاربردهای خاص خود را دارند و باید با آنها آشنا باشید تا بتوانید از این دیتاها استفاده کنید. در این مقاله از وبلاگ پاس پک، انواع دیتا در PHP را معرفی کردیم تا درک بهتری از انواع دیتاهای اصلی پیدا کنید که برای استفاده در PHP دردسترس هستند.
سؤالات متداول
1. انواع دادههای استفادهشده در PHP کداماند؟
از دادههای رایج استفادهشده میتوان به اینها اشاره کرد:
- عدد صحیح (Integer): رایجترین نوع داده عددی است که برای ذخیره اعداد بدون جزء کسری (۷۰۷، ۰، ۷۰۷) استفاده میشود.
- اعداد اعشاری (Floating Point یا Float)
- کاراکتر (char)
- استرینگ (str or text)
- بولی (Bool)
- نوع شمارششده (enum)
- آرایه (Array)
- داده (Date)
2. PHP از چند نوع داده استفاده میکند؟
Data Types نوع دادهای را تعریف میکند که یک متغیر میتواند ذخیره کند. PHP به هشت نوع مختلف داده این اجازه را میدهد.