قبل از اینکه بخوایم بپردازیم به ۴ روش تعریف رشته در php، میخوایم ببینیم در php چه چیزهایی رو رشته می نامیم.
رشته : به مجموعه ای از کاراکتر ها که کنار هم قرار میگیرند، رشته میگوییم.
۴ روش تعریف رشته در php:
1 - سینگل کوتیشن (single quoted)
2 - دابل کوتیشن (double quoted)
۳ - هروداک (heredoc syntax)
۴ - نوداک (nowdoc syntax)
خب تا این جا فهمیدیم که به ۴ صورت میشه رشته ها رو در php تعریف کرد، حالا بریم برای هر کدوم مثال هایی رو بزنیم:
سینگل کوتیشن بصورت زیر تعریف میشه:
<?php $str1 = 'Hello World !!!'; echo $str1; ?>
این نوع تعریف ساده ترین نوع تعریف رشته هاست.
خروجی کد بالا بصورت زیر نمایش داده میشه:
Hello World !!!
حال مثال زیر رو هم ببینید:
<?php $str1 = '<h1>Hello virgool !!!</h1> '; echo $str1; ?>
در سینگل کوتیشن tag های html رو میاد و ترجمه میکنه که خروجی به صورت زیر هست:
Hello virgool !!!
اما اگه یه متغیر رو درون سینگل کوتیشن بزاریم، مقدار متغیر رو برنمیگردونه و بصورت زیر نمایش میده:
<?php $str1 = 'World !!!'; $str2 = 'Hello $str1'; echo $str2; ?>
خروجی کد بالا
Hello $str1
اما در دابل کوتیشن میاد و مقدار متغیر رو چاپ میکنه، بصورت زیر:
<?php $str1 = "World !!!" $str2 = "Hello $str1" echo $str2; ?>
که خروجی به صورت زیر میشه:
Hello World !!!
پس اگه در برنامه ای خواستین که متغیری رو بین یک رشته قرار بدین یا از دابل کوتیشن استفاده کنین و یا بیان concatination انجام بدین، بوسیله دات (.) که بصورت زیر میشه:
<?php $str1 = 'World !!!'; $str2 = 'Hello ' . $str1; echo $str2; ?>
بوسیله نقطه (.) میتوانیم در php دوتا رشته رو به هم وصل کنیم.
سومین نوع تعریف رشته بصورت Heredoc است. این نوع تعریف برای زمانی است که ما یک رشته طولانی و چند خطی داریم.
برای تعریف این نوع رشته به این صورت عمل میکنیم:
<?php $str = <<<MYSTR Example of string spanning multiple lines using heredoc syntax. MYSTR; ?>
چند نکته رو باید در تعریف این نوع رشته در نظر بگیرید:
۱ - اینکه به جای MYSTR میتونید هر اسم دلخواهی رو تعریف کنید فقط باید با حروف بزرگ نوشته شوند.
۲ - در هروداک باید MYSTR را ببندید(یا هر اسم دلخواهی که انتخاب میکنید.)
۳ - هروداک با >>> شروع میشود.
۴ - حتما لازم است بعد از اینکه MYSTR را میبندید، بعد از سیمیکالن یک اینتر بزنید که به خط بعد منتقل بشه وگر نه با error مواجه میشوید.
برای چاپ این نوع رشته هم بصورت قبل از echo استفاده میکنیم
<?php $str = <<<MYSTR Example of string spanning multiple lines using heredoc syntax. MYSTR; echo $str; ?>
خروجی بصورت زیر است:
Example of string spanning multiple lines using heredoc syntax.
در این نوع تعریف هم براحتی میتوانیم از متغیر ها درون رشته استفاده کنیم، به کد زیر توجه کنید:
<?php $num = 4; $str = <<<MYSTR Example of string spanning multiple lines using heredoc syntax. this string is $num lines. MYSTR; echo $str; ?>
خروجی به صورت زیر است:
Example of string spanning multiple lines using heredoc syntax. this string is 4 lines.
نوع تعریف بعدی رشته که آخرین نوع هم هست nowdoc نام دارد.تعریف آن بصورت زیر است:
<?php $str = <<<'MYSTR' Example of string spanning multiple lines using nowdoc syntax. MYSTR; echo $str; ?>
تفاوت این نوع تعریف با هروداک در این است که اسمی که انتخاب میکنیم باید در سینگل کوتیشن قرار بگیرد که در اینجا 'MYSTR' است و به همین صورت تعریف میشود. و همچنین نمیتوان از متغیر ها در nowdoc استفاده کرد مثل سینگل کوتیشن.
به مثال زیر دقت کنید:
<?php $num = 4; $str = <<<'MYSTR' Example of string spanning multiple lines using nowdoc syntax. this string is $num lines. MYSTR; echo $str; ?>
خروجی به صورت زیر است:
Example of string spanning multiple lines using nowdoc syntax. this string is $num lines.
میبینید که فقط متن $num را چاپ کرده و نه مقدارش را.
قوانین که در مورد heredoc گفته شد در مورد nowdoc هم صادق است.
خب اینم از ۴ نوع تعریف رشته ها در php، برای اینکه تسلط بیشتری پیدا کنید و همچنین تفاوت های این ۴ نوع رو به درستی متوجه بشین حتما سعی کنید برای خودتون مثال هایی رو حل کنید.
از سایت خود php.net هم میتونید استفاده کنید.