در مقاله ی آماده سازی محیط کار با PHP درباره ی مقدمات PHP صحبت کردیم. حال در این مقاله قصد داریم درباره ی انواع دادهها در PHP صحبت کنیم. مقداری که به یک متغیر PHP انتساب داده میشود، میتواند انواع دادههای متفاوت، مثلا یک رشته ی ساده یا نوع عددی و یا انواع داده ای پیچیدهتر همانند آرایهها و یا اشیاء باشد. انواع دادهها در PHP به 8 نوع داده ی اصلی تقسیم میشود: اعداد صحیح، اعداد اعشاری، رشته ها، آرایه ها، اشیاء، boolean ،resource و NULL. در ادامه به تشریح کاملتر هر کدام از موارد ذکر شده میپردازیم.
اگر به یادگیری بیشتر در زمینه ی PHP علاقه داری، با شرکت در دوره ی آموزش PHP در کمتر از یک سال به یک متخصص PHP تبدیل میشوی که آماده ی استخدام، دریافت پروژه، کسب درآمد و یادگیری مباحثی مثل لاراول هستی.
اعداد صحیح یا Integer
متغیرهای عددی Integer شامل اعداد مثبت، منفی هستند و در هنگام کار با زبان های برنامه نویسی برای ما بسیار کاربردی هستند. برای تعریف یک متغیر در زبان PHP از علامت $ در ابتدای نام متغیرها استفاده میشود، سعی کنید در انتخاب اسامی متغیرها از کلمات با معنی استفاده نمایید تا بعدا کاربرد هر کدام را به یاد داشته باشید.
در کد زیر 4 متغیر تعریف شده است که به هر کدام مقادیر متفاوتی انتساب داده شده است.
<?php
$a = 123; // decimal number
var_dump($a);
echo "<br>";
$b = -123; // a negative number
var_dump($b);
echo "<br>";
$c = 0x1A; // hexadecimal number
var_dump($c);
echo "<br>";
$d = 0123; // octal number
var_dump($d); ?>
خروجی عدد مثبت int(123) خروجی عدد منفی int(-123) خروجی hexadecimal int(26) خروجی octal int(83)
نکته ای که باید توجه کنید این است که در تعریف متغیرهای عددی، مقدار را بین ' (تک کوتیشن) یا " (دابل کوتیشن) قرار نمیدهیم زیرا اگر چنین کاری را انجام دهیم آن متغیر به نوع رشته تبدیل میشود و دیگر نمیتوان بر روی آن عملیات ریاضی را انجام داد.
مثالی از متغیرهای عددی: تا الان با متغیرهای عددی آشنا شدیم در ادامه یک مثال از محاسبات و اولویت علمگرهای محاسبه ای میزنیم.
در بالا یک متغیر دیگر به اسم avg تعریف کرده ایم که قرار است میانگین نمرات را محاسبه کند، اگر دقت کرده باشید ما متغیرهایی که دارای نمرات بودند را داخل پرانتز گذاشته ایم، هر چیزی که بین پرانتز قرار میگیرد دارای اولویت بالاتری نسبت به عملگرهای دیگر است و در اینجا اول نمرات را با هم جمع کرده ایم و بعد آنها را بر تعدادشان که 3 است تقسیم کرده ایم.
اما شاید اینجا یک مشکل دیده شود که میانگین نمرات ما، اعشار زیادی دارد، برای کوتاه کردن آن به دو رقم اعشار یا هر تعداد رقم اعشار که شما مدنظرتان است میتوانید از تابع زیر استفاده کنید.
در اینجا خروجی عدد 17 شده است چون رقم اعشار عددی بزرگی است و به سمت بالاتر نزدیک است. نکته ای که باید اینجا توجه کنید این است که اگر عدد اعشار شما بالاتر از نیم یا 5 باشد به سمت بالا و اگر کمتر از نیم یا 5 باشد به سمت پایین گرد میشود.
رشتهها (Strings)
رشته ها، دنباله ای از کاراکترها هستند، که هر کاراکتر معادل یک بایت است. یک رشته میتواند شامل حروف، اعداد و کاراکترهای ویژه باشد که میتواند حداکثر تا مقدار 2 گیگابایت (2147483647 بایت) بزرگ شود. سادهترین راه برای تعریف یک رشته، قرار دادن آن داخل تک کوتیشن میباشد.
<?php
$a = 'Hello world!';
echo $a;
echo "<br>";
$b = "Hello world!";
echo $b;
echo "<br>";
// در مثال زیر زمانی که بخواهیم از تک کوتیشن داخل رشته استفاده کنیم
// از علامت \ استفاده میکنیم و سپس تک کوتیشن
$c = 'Stay here, I\'ll be back.';
echo $c;
?>
در قطعه کد بالا سه متغیر متفاوت با حالتهای متفاوت تعریف شده است. خروجی کدهای بالا به شرح ذیل میباشد:
Hello world! Hello world! Stay here, I'll be back.
اعداد اعشاری
در PHP برای تعریف اعداد اعشاری یا float کافی است فقط عدد اعشار مورد نظر را در متغیر مقداردهی کنید و لازم به کار اضافه نیست چون همان طور که گفته شد، PHP با تشخیص نوع داده ی ورودی، نوع متغیر را تعیین میکند، به مثالهای پایین توجه کنید.
مثال بالا کاملا گویاست که چگونه یک متغیر از نوع اعشار را ایجاد کنیم.
float(1.234) float(10200) float(4.0E-10)
Booleanها در PHP
بولینها شبیه یک سوییچ هستند که امکان قبول دو مقدار True و False یا 0 و 1 را دارند.
<?php
// Assign the value TRUE to a variable
$show_error = true;
var_dump($show_error);
?>
خروجی به شرح ذیل میباشد:
bool(true)
آرایهها Array
متغیرهای آرایه ای از مهمترین متغیرهای هر زبان برنامه نویسی به حساب میآیند و باید آنها را به خوبی درک کنیم تا بتوانیم از آنها به درستی استفاده کنیم. تعریف کلی آرایهها به صورت زیر است:
آرایهها در کل میتوانند مجموعه ای از دادهها را در خود ذخیره سازی کنند، این که میگوییم مجموعه ای از دادهها منظورمان این است که تعداد زیادی مقدار از هر نوع در آن میتوان ذخیره سازی کرد. برای مثال ما در متغیرهای عددی یا رشته یاد گرفته ایم که فقط در آنها میتوانیم اعداد یا رشته ذخیره سازی کنیم اما در آرایهها این گونه نیست و شما میتوانید از هر نوع داده ای درون یک یا چند آرایه داشته باشید.
در PHP ما دو نوع آرایه داریم که نوع اول آن ایندکسهای پیش فرض دارند که به آنها Indexed array گفته میشود و به نوع دوم آن، که به صورت دستی ایندکسهای آن را مشخص میکنیم، Associative array گفته میشود که به معنی آرایههای انجمنی است.
ساخت آرایه از نوع Indexed array
تعریف کردن آرایهها در PHP به دو روش امکان پذیر است، از روش اول شروع میکنیم:
روش اول قرار دادن آکولاد [ ] باز و بسته و قرار دادن مقادیر بین آنها است. همان طور که میبینید، مقادیر از نوع عدد و رشته را وارد کرده ایم. برای مقداردهی هنگام تعریف متغیر حتما باید مقادیر با کاما "," از یکدیگر جدا شوند وگرنه دچار خطا میشویم.
<?php
$arr = ['7learn','google',24,76,'amazon'];
روش دوم برای تعریف آرایه استفاده از تابع array است، به مثال پایین توجه کنید.
تفاوتی بین این دو روش احساس نمیشود و بستگی به راحتی شما دارد که از کدام روش برای تعریف آرایهها استفاده کنید.
روش فراخوانی آرایههای indexed array
آرایهها از 0 ایندکس گذاری میشوند. مقادیری که شما تعریف کرده اید به صورت خودکار ایندکس گذاری میشوند و ما میتوانیم با استفاده از ایندکس به مقادیر آرایه دسترسی داشته باشیم. اگر میخواهید که مقادیر آرایه را همراه با ایندکس شان مشاهده کنید میتوانید از توابع زیر استفاده کنید.
در اینجا از تابع print_r برای چاپ تمامی مقادیر آرایه استفاده کرده ایم. به این نکته توجه داشته باشید که آرایهها را نمیتوان با echo چاپ کرد چون echo برای آرایهها ساخته نشده است.
همچنین ما میتوانیم از تابعی دیگری به نام ()vardump برای چاپ آرایهها و دریافت جزییات بیشتر استفاده کنیم، به مثال پایین توجه کنید.
شاید اولین چیزی که توجه شما را جلب کند این است که ما قرار نبود از echo برای چاپ آرایهها استفاده کنیم اما باید به شما بگوییم که وقتی شما یک ایندکس از آرایه را فراخوانی میکنید اگر یک عدد یا رشته باشد، میتوان آن را با echo چاپ کرد.
در آرایهها برای فراخوانی کردن یک ایندکس از آن کافی است نام متغیر آرایه را بیاوریم و با آکولاد باز و بسته [ ] شماره ی ایندکس را بین آن قرار دهیم.
$arr[1];
در مثال بالا ما ایندکس 1 را از آرایه ی arr فراخوانی کرده ایم. توجه داشته باشید که اگر ایندکس وارد شده، خارج از بازه ی آرایه باشد، دچار خطا میشویم. برای مثال آرایه ی پایین 5 عضو دارد و 4 ایندکس (ایندکسها از 0 شروع میشوند) که اگر ما ایندکس 10 را فراخوانی کنیم با خطای زیر مواجه میشویم:
در آرایه ی بالا ما اطلاعات یک فرد را در آرایه ذخیره کرده ایم، برای این که بتوانیم خودمان ایندکس یک آرایه را تعریف کنیم، اگر ایندکس مدنظر ما یک رشته باشد، باید آن را در میان یک ' (تک کوتیشن) یا " (دابل کوتیشن) قرار دهیم و درصورتی که مقدار روبروی ایندکس عددی باشد مقدار را مینویسیم و با استفاده از علامت <= (مساوی و بزرگتری) به آن اشاره میکنیم. در نهایت برای تعریف ایندکس بعدی از کاما "," استفاده میکنیم.
اگر با تابع print_r آرایه را چاپ کنیم تمامی ایندکسها با مقادیرشان قابل مشاهده هستند.
روش فراخوانی آرایه های انجمنی یا Associative array
روش فراخوانی آرایههای انجمنی دقیقا مثل آرایههای ایندکسی میباشد، در اینجا نیز شما باید نام ایندکسی که به صورت دستی تعریف کرده اید را بیاورید، به مثال پایین توجه کنید.
شاید برایتان سوال باشد که آیا میتوان این دو آرایه را با یکدیگر داشت؟ باید به شما بگوییم بله، ولی شاید از خود بپرسید که ایندکس گذاریها چگونه انجام میشود؟
وقتی که ما دو نوع آرایه را در یک آرایه داریم ایندکس هایی که ما خودمان تعریف کرده ایم که کاملا مشخص هستند اما مقادیری که به آنها ایندکس نداده ایم، به صورت خودکار از شماره صفر ایندکس گذاری میشوند، به مثال زیر توجه کنید.
در مثال بالا ما در آخر آرایه سه مقدار amazon ،43، google را بدون ایندکس وارد کرده ایم و همان طور که قابل مشاهده است از صفر ایندکس گذاری شده اند.
اشیاء (Objects)
Object یک نوع داده است که دادهها و اطلاعات مربوط به نحوه ی پردازش آنها را در خود ذخیره میکند. آبجکت یک نمونه از کلاس است. هر آبجکت به متدها و ویژگیهای کلاس پدرش دسترسی دارد. در زیر مثالی از نحوه ی تعریف کلاس و آبجکت برای آن را مشاهده میکنید:
<?php
// تعریف کلاس
class greeting{
// properties
public $str = "Hello World!";
// methods
function show_greeting(){
return $this->str;
}
}
// ساخت شی از کلاس بالا
$message = new greeting;
var_dump($message);
?>
NULL در PHP
مقدار NULL برای نمایش متغیرهای خالی استفاده میشود. متغیر از نوع NULL متغیری است که هیچ داده ای در آن وجود ندارد.
<?php
$a = NULL;
var_dump($a);
echo "<br>";
?>
خروجی کد بالا به صورت زیر خواهد بود.
NULL
زمانی که یک متغیر بدون مقدار تعریف میشود به صورت خودکار مقدار null به آن انتساب داده میشود. بسیاری از توسعه دهندگان تازه کار تصور میکنند دو قطعه کد زیر شبیه هم هستند در حالی که این گونه نیست.
<?php
// متغیر زیر دارای مقدار NULL است
$var1=NULL;
// ولی متغیر زیر نشانگر این است که این متغیر هیچ مقداری نگرفته است
$var2 = "";
Resourceها در PHP
Resource یک متغیر خاص است که منبعی برای یک منبع خارجی است. Resourceها معمولا برای باز کردن فایلها و ارتباط با پایگاه داده استفاده میشوند.
<?php
// بازکردن یک فایل برای خواندن
$handle = fopen("note.txt", "r");
var_dump($handle);
?>
<?php
// اتصال به بانک اطلاعاتی با تنظیمات پیش فرض
$link = mysqli_connect("localhost", "root", "");
var_dump($link);
?>
جمع بندی
در این مقاله توضیح دادیم که برای تعریف متغیرها در PHP باید در ابتدای متغیر از علامت $ استفاده کنیم و سپس به بررسی نوع دادههای عددی پرداختیم و آموختیم که متغیرهای عددی (Integer) میتوانند دارای مقادیر مثبت، منفی باشند و سپس در ادامه درباره ی اعداد اعشاری در زبان PHP توضیح دادیم که در PHP برای تعریف اعداد اعشاری یا float کافی است فقط عدد اعشار مورد نظر را در متغیر مقداردهی کنید. در ادامه به معرفی نوع داده ای رشته ای پرداختیم و توضیح دادیم که رشته ها، دنباله ای از کاراکترها هستند. در خصوص بولینها نیز شرح دادیم که بولینها شبیه یک سوییچ هستند که امکان قبول دو مقدار True و False یا 0 و 1 را دارند. سپس به نحوه ی تعریف و فراخوانی آرایهها در PHP پرداختیم. آرایهها در PHP دو نوع هستند آرایههای اندیسی و آرایههای انجمنی، که به تشریح و ارائه ی مثال برای هر دو نوع آرایهها پرداختیم. در نهایت به توضیح انواع داده ای اشیاء و NULL و Resource پرداختیم.
امیدواریم که مقاله انواع دادهها در PHP برای شما مفید باشد. شما میتوانید سوالات خود را در رابطه با انواع متغیرها در بخش نظرات با ما در میان بگذارید.