آشنایی با انواع داده ها در php

تاریخ: 17 تیر 1399

می دانیم که متغیرها داده ها را در خود ذخیره می کنند. این داده ها می توانند انواع مختلفی داشته باشند و با آنها می توانیم کارهای مختلفی انجام دهیم.

در php داده های زیر پشتیبانی میشود:

  • رشته یا string
  • عدد صحیح یا integer
  • عدد اعشاری یا float یا double
  • عدد منطقی یا boolean
  • آرایه یا array
  • شی یا object
  • خالی یا null
  • منبع یا resource

 

رشته یا string در php

اگر داده ما متن باشد مانند محمد، سلام جهان و …، از نوع رشته یا string خواهد بود.

$x = 'mohammad';

 

در php چهار روش برای تعریف رشته وجود دارد:

  • تک کوتیشن یا single qoute
  • دابل کوتیشن یا double qoute
  • سینتکس herodoc
  • سینتکس nowdoc

 

روش تک کوتیشن یا single qoute برای تعریف رشته در php

ساده ترین روش برای تعریف رشته استفاده از سینگل کوتیشن می باشد. در این روش رشته را درون سینگل کوتیشن محصور می کنیم:

$x = 'mohammad';

 

در درون رشته می توانیم از اینتر استفاده کنیم تا ادامه متن به خط بعد برود. (گرچه در خروجی در نظر گرفته نمی شود):

echo 'You can also have embedded newlines in
strings this way as it is
okay to do';

 

اگر بخواهیم درون سینگل کوتیشن از سینگل کوتیشن استفاده کنیم، برای جلوگیری از تداخل لازم است قبل از هر سینگل کوتیشن درونی یک بک اسلش قرار دهیم:

echo 'You can also \'eat\' breakfast';

در این صورت ما سینگل کوتیشن های درونی را اصطلاحا scape کردیم و سینگل کوتیشن ها را جزئی از متن قرار دادیم.

اگر یک متغیر را درون سینگل کوتیشن استفاده کنیم، مقدار آن چاپ نمی شود. بلکه نام متغیر را به عنوان یک رشته متنی در نظر می گیرد و چاپ می کند:

$x = 123;

echo 'Number is: $x'; //output: Number is: $x

 

 

روش دابل کوتیشن یا double qoute برای تعریف رشته در php

روش دیگر برای تعریف رشته، محصور کردن متن در دابل کوتیشن می باشد.

درون دابل کوتیشن همه چیز به عنوان متن در نظر گرفته نمی شود. در واقع php ممکن است بعضی موارد داخل آن را تحلیل و اجرا کند. مثل متغیرها و یا کاراکترهای خاص که کار مشخصی انجام می دهند.


$x = "hello";

 

اگر یک متغیر درون دابل کوتیشن استفاده شود، php مقدار آن متغیر را میخواند: (بر خلاف سینگل کوتیشن که نام متغیر را به صورت متن در نظر می گرفت)

$x = "mohammad";

echo "hello $x"; //output: hello mohammad

 

بهتر است نام متغیر را درون آکولاد قرار دهیم: (با قرار دادن متغیر در آکولاد می توانیم به ابتدا یا انتهای متغیر چیزی را متصل نماییم)


$x = "mohammad";

echo "hello {$x}"; //output: hello mohammad

echo "hello {$x}am"; //output: hello mohammadam

 

اگر بخواهیم درون دابل کوتیشن از دابل کوتیشن استفاده کنیم، برای جلوگیری از تداخل لازم است قبل از هر دابل کوتیشن درونی یک بک اسلش قرار دهیم:


echo "You can also \"eat\" breakfast";

 

استفاده از دابل کوتیشن درون سینگل کوتیشن و استفاده از سینگل کوتیشن درون دابل کوتیشن مانعی ندارد:


echo "hello 'mohammad'";

echo 'goodby "hossein"';

 

روش herodoc برای تعریف رشته در php

این روش معمولا برای رشته های چندخطی (مخصوصا کوئریها) استفاده می شود. در این روش مشکل تداخل کوتیشن ها رفع می شود. (دیگر نیازی به scape نخواهیم داشت)

$x = <<<SQL
select *
from table
where name='mohammad'
SQL;

 

یکی از مهم ترین فایده های روش herodoc استفاده در html می باشد. استفاده از تگ های html در کدهای php به دلیل وجود کوتیشن های بسیار یک مقدار سخت است. با روش herodoc به راحتی می توانیم کدهای html را درون php بنویسیم:

echo <<<HTML
<a href="htpps://google.com">htpps://google.com</a>
HTML;

 

خصوصیت مهم دیگر روش herodoc اینست که string ها را مانند تگ pre در html در نظر می گیرد. یعنی white space ها را حساب می کند:

echo <<<PHP
Hello World yes
to all if there
PHP;

/*output:
Hello World yes
to all if there
*/

 

روش nowdoc برای تعریف رشته در php

تفاوت ظاهری سینتکس nowdoc و herodoc در این است که شناساگر (identifier) ابتدای سینتکس nowdoc با سینگل کوتیشن محصور می شود:


echo <<<'PHP'
Hello World
PHP;

 

در روش nowdoc مانند روش سینگل کوتیشن، مقدار متغیرها در نظر گرفته نمی شود و همه را مانند string در نظر می گیرد:

$x = 123;

echo <<<'PHP'
Hello World $x
PHP;

//output: Hello World $x

 

با توضیحات بالا فهمیدیم که روش های herodoc و nowdoc در واقع یک جایگزین مناسب روش های دابل کوتیشن و تک کوتیشن برای تعریف رشته های چند خطی می باشند و محدودیت تداخل کوتیشن ها را نیز رفع می کنند.

 

اعداد یا numbers در php

در php سه نوع عدد داریم:

  • عدد صحیح مانند 1 یا 2 که به آنها integer گفته می شود. این اعداد بخش اعشاری ندارند. این اعداد می توانند مثبت یا منفی باشند.
  • عدد اعشاری مانند 2.7 یا 5.9 که به آنها float یا double گفته می شود. این اعداد یا قسمت اعشاری دارند و یا به فرمت exponential می باشند. مثل عدد 5.56E-5
  • عدد رشته ای یعنی عدد را به عنوان رشته تعریف کنیم. مثلا عدد در تک یا دابل کوتیشن تعریف شود.

 

اعدادی که در php به عنوان integer ساپورت می شوند اعداد بین -2147483648 تا 2147483647 می باشد. اعدادی که خارج از این اعدا باشند به عنوان عدد اعشاری یا float ذخیره می شوند.

در محاسبات اگر یکی از operand ها اعشاری باشد، مقدار نهایی اعشاری خواهد بود. مثلا عدد 10 که حاصل ضرب 4*2.5 باشد به عنوان عدد اعشاری ذخیره می شود چون عدد 2.5 اعشاری است.

چند قانون عدد صحیح یا integer

  • عدد صحیح باید شامل حداقل یک عدد باشد – صفر تا نه
  • یک عدد صحیح نباید شامل بخش اعشاری باشد.
  • عدد صحیح می تواند مثبت یا منفی باشد.
  • اعداد صحیح می توانند به چهار صورت دوبیتی یا binary، ده بیتی یا decimal، هشت بیتی یا octal و شانزده بیتی یا hexadecimal باشند.

 

با استفاده از تابع is_numeric می توانیم مشخص کنیم که رشته ما عددی است یا خیر. اگر رشته ما فقط حاوی اعداد باشد یک رشته عددی یا string number است.


$x = '123';

echo is_numeric($x); //output: 1

 

اگر رشته عددی را در expression استفاده کنیم، به عنوان عدد وارد می شود و نوع داده حاصل شده هم عدد خواهد بود.


$x = '123';

$z = $x + 4;

echo $z; //output: 127

echo is_numeric($z); // output: 1

 

ثابت ها یا constants در php

ثابت ها نوعی متغیر هستند با این تفاوت که یکبار تعریف می شوند و در طول اجرای برنامه قابل تغییر یا redefine کردن نیستند.

نام ثابت ها با حرف یا underscore شروع می شود و معمول است که از حروف بزرگ برای نامگذاری ثابت ها استفاده می شود.

ثابت ها حوزه دسترسی scope نامحدود یا superglobal دارند. یعنی در همه جای اسکریپت قابل استفاده هستند. دقیقا مانند GLOBALS$

برای تعریف یک ثابت از تابع define استفاده می کنیم:

//define(name, value, case-insensitive)

define('X', 1);

echo X; //output: 1

 

همانطور که مشاهده می کنید، پارامتر اول این تابع نام ثابت ما است. پارامتر دوم این تابع مقدار ثابت ما است.

همچنین توسط پارامتر سوم مشخص می کنیم که نام ثابت ما به حروف کوچک و بزرگ حساس باشد یا خیر. در حالت پیشفرض به حروف کوچک و بزرگ حساس است و مقدار پارامتر سوم false یا صفر می باشد. اگر مقدار آن را یک دهیم، دیگر به حروف کوچک و بزرگ حساس نبوده و اصطلاحا case-insensitive خواهد شد.

مقدار ثابت می تواند یک آرایه باشد. در اینصورت برای دسترسی به المان های آرایه می توانیم از ایندکس ها استفاده نماییم:

define('X', [123, 456, 789]);

echo X[1]; //output: 1

 

چون بازتعریف ثابت ها در php منجر به ایجاد خطا می شود، لذا بهتر است قبل از تعریف ثابت، تعریف نشده بودن آن از قبل بررسی شود:


if( !defined('ABSPATH') )
{
define('ABSPATH', __DIR__);
}

 

آرایه ها یا arrays در php

آرایه یک متغیر خاص است که می تواند بیش از یک مقدار را همزمان داشته باشد.


//before
$name1 = 'mohammad';
$name2 = 'zahra';
$name3 = 'toofan';
$name4 = 'hashem';

//with array
$name = [ 'mohammad', 'zahra', 'toofan', 'hashem' ];

//access
echo $name[0]; //output: mohammad
echo $name[1]; //output: zahra
echo $name[2]; //output: toofan
echo $name[3]; //output: hashem

 

علاوه بر روش [ ] برای تعریف آرایه ها، از تابع ()array نیز می توان برای اینکار استفاده کرد:

$names = array( 'mohammad', 'zahra', 'toofan', 'hashem' );

 

چنانچه دیدیم، هر المان در آرایه به صورت خودکار یک کلید یا index دارد که از صفر شروع می شود و تا آخرین المان آرایه ادامه می یابد.

همانطور که در بالا نوشتیم، المان اول دارای ایندکس صفر بوده و با متغیر [0]name$ توانستیم به آن دسترسی داشته باشیم.

همچنین می توانیم ایندکس اختصاصی خودمان را برای هر المان داشته باشیم که به آن کلید المان یا key گفته می شود:


$names = [ 
'name1' => 'mohammad', 
'name2' => 'zahra', 
5 => 'toofan', 
'name4' => 'hashem' 
];

echo $names['name1']; //output: mohammad
echo $names[5]; //output: toofan

 

انواع آرایه ها در php

در php سه نوع آرایه وجود دارد:

  1. آرایه ایندکسی
  2. آرایه انجمنی
  3. آرایه چند بعدی

آرایه ایندکسی آرایه ای است که کلیدی برای آن در نظر نگرفته ایم و به صورت خودکار همان ایندکس های 0 تا عدد خاص را می گیرد:

$names = array( 'mohammad', 'zahra', 'toofan', 'hashem' ); 

 

آرایه انجمنی آرایه است که کلیدهای خاص به آن داده ایم

$names = [ 
'name1' => 'mohammad', 
'name2' => 'zahra', 
5 => 'toofan', 
'name4' => 'hashem' 
];

echo $name['name1']; //output: mohammad
echo $name[5]; //output: toofan

 

آرایه چند بعدی آرایه ای است که حداقل یکی از المان های آن خودش یک آرایه باشد:


$names = [ 
'name1' => 'zahra', 
'name2' => [
"first" => "mohammad",
"last" => "yousefi"
]
];

 

برای دسترسی به المان های آرایه درونی از همان کلید یا ایندکس استفاده می کنیم:


$names = [ 
'name1' => 'zahra', 
'name2' => [
"first" => "mohammad",
"last" => "yousefi"
]
];

echo $names['name2']['first']; //output: mohammad

 

آرایه های چندبعدی در php بسیار کاربردی هستند لذا بهتر است مفهوم و کار با آن به درستی یاد گرفته شود.

 

اشیاء یا object در php

اشیاء و کلاس ها دو بخش اصلی برنامه نویسی شی گرا هستند.

کلاس در واقع یک طرح اجرا نشده است و شی در واقع یک نمونه اجرا شده از یک کلاس می باشد. یعنی ابتدا کلاس را ایجاد می کنیم و سپس یک شی را از آن تولید می کنیم.

هر کلاس می تواند ویژگی ها (property) و رفتارهای (method) خاصی داشته باشد.


class biawp
{
    public $prop1 = 'Mohammad Yousefi';

    function method1() {
        echo $this->prop1;
    }
}

$obj = new biawp;

$obj->method1();

 

 

خالی یا null

null یک دیتاتایپ خاص است که فقط یک مقدار دارد و آن هم null است. پس متغیری که مقدار null دارد در واقع هیچ مقداری ندارد.

همچنین با استفاده از مقدار null می توانیم یک متغیر را خالی کنیم:


$x = 123;

$x = null;

var_dump($x); //output: C:\wamp64\www\test.php:7:null

 

آموزش بعدی >> آشنایی با عملگرها در php

دیدگاهتان را بنویسید

  • مریم گفت:

    سلام وقت بخیر
    به نظر من همه چی رو عالی گفته بودید بجز اشیا که مهمترین قسمت هست. خیلی نمیشد چیزی ازش متوجه شد.

  • طراحی افزونه وردپرس