انواع متغیرها در php
![انواع متغیرها در php](images/post/1varivleinphp2.png)
در این مقاله سه دستۀ مختلف از انواع متغیرها بررسی میشوند: اعداد (numbers) ،رشته ها (strings) و آرایه ها (Arrays) .
دسته اعداد، شامل دو نوع متغیر: اعداد صحیح (integers) و اعداد اعشاري (Floating-point) (همچنین اعداد اعشاري با دقت مضاعف (double precision floating point) و یا (doubles)) می شوند. اما از آنجا که تفاوت چندانی در چگونگی به کار گرفتن این دو نوع متغیر، وجود ندارند، ما این دو را در یک دسته قرار داده ایم.PHP همچنین داراي یک نوع متغیر به نام شیء (object) می باشد.
- اعداد
همان گونه که ذکر شد، براي آسانتر شدن آموزش، دو نوع متغیر اعداد صحیح و اعداد اعشاري در دستۀ اعداد قرار داده شده اند. در این قسمت به صورت مختصر به ذکر تفاوتهاي بین این دو می پردازیم. اعداد به صورت اعشاري(همراه با ممیز) و یا اعداد کسري ار نوع متغیرهاي اعشاري محسوب میشوند. براي مثال 1.0 در php یک عدد اعشاري به حساب می آید. توجه کنید که در php اعداد، به صورت کسري ذخیره نمی شوند بلکه به معادل اعشاري خود تبدیل شده و سپس ذخیره میشوند. براي مثال عبارت 1/4 به صورت 0.25 ذخیره و نوشته میشود. مثالهایی از اعداد صحیح و اعداد اعشاري معتبر عبارتند از:
- رشته ها
یک متغیر از نوع رشته اي (string) از ترکیب هر نوع کاراکتري (حروف، اعداد، علائم و جاي خالی) می تواند ساخته شود. اما این کاراکترها باید در داخل یکی از علامتهاي quotation ( ' ' ) و یا Double Qutation (" ") قرار گیرند. مثالهایی از دادههاي رشتهاي مجاز عبارتند از:
به مثال آخر توجه کنید. که اگر یک عدد نیز در داخل علامتهاي نقل قول قرار گیرد، به عنوان یک داده رشته اي در نظر گرفته میشود. به عبارت دیگر این داده رشته اي از ترکیب کاراکترهاي عددي، تشکیل شده است.مثالهایی از داده هاي رشته اي غیرمجاز عبارتند از :
در مثال اول، از آنجایی که عبارت، داخل یکی از علامتهاي مخصوص داده هاي رشته اي قرار نگرفته است. به عنوان یک داده رشته اي در نظر گرفته نمیشود. در مثال دوم ، php بعد از رسیدن به علامت نقل قول دوم، داده رشته اي را تمام شده فرض میکند. بنابراین ادامۀ عبارت باعث ایجاد اشکال میشود. براي رفع این مشکل براي اینکه، php علامت هاي quotation داخل عبارت را به صورت کاراکتر آن در نظر بگیرد ( و نه علامتی براي آغاز یا ختم یک داده رشته ای)، مثال دوم را به این صورت اصلاح می کنیم که در تابع print قبل از علامتهاي quotation از backslash() استفاده میکنیم:
بنابراین هر چند که گفته شد در داده رشته اي هر ترکیبی از کاراکترها به کار میرود. باید توجه داشته باشید که در مورد کاراکترهاي ویژه، باید دقت خاصی اعمال شود. کاراکترهاي ویژه دیگري نیز وجود دارند که در هنگام استفاده از آنها در یک داده رشته اي باید یک علامت Backslash () قبل از آنها قرار دهیم. این کاراکترها عبارتند از: Backslash () ، single quotation mark (') ،Apostrophe و علامت dollar ($) .
مزیت استفاده از double quotes به جاي Single quotes در این است که در حالت دوم، اگر متغیري داخل داده رشته اي خود به کار ببرید، نام متغیر به عنوان جزئی از داده در نظر گرفته میشود، و نه مقدار آن متغیر جایگزین نام آن نمیشود.
- آرایه ها
برخلاف داده هاي عددي و رشته اي که تنها میتوانند داراي یک ارزش و یا مقدار باشند، آرایه ها میتوانند حاوي لیستی از مقادیر باشند. بنابراین شما میتوانید مقادیر مختلف عددي و یا رشته اي را داخل یک آرایه قرار دهید. همچنین آرایه ها، خود، میتوانند شامل لیستی از آرایه ها باشند. آرایه هاي استاندارد در php، از مقادیر داده اي و یا عددي تشکیل میشوند.(این آرایه هاي شماره گذاري شده (indexed) و یا برداری (vector) نیز معروف هستند). در php به هر دو دسته (یک یا چند بعدي) لفظ "آرایه" اطلاق میشود.
انواع مختلف اطلاعات در یک متغیر می تواند ذخیره شود که در طول برنامه می توانید رفتارهاي متفاوتی با آن نمایید. برخی زبانهاي برنامه نویسی شما را وادار می کنند که در ابتدا و در موقع تعریف متغیر نوع آن را نیز مشخص نمایید. ولی در php لزومی به این کار نیست و نوع اولین مقداري که وارد متغیر شود ، به عنوان نوع متغیر شناخته می شود.
شما می توانید از دستور gettype() براي مشاهده نوع یک متغیر استفاده کنید. همچنین میتوانید با استفاده از دستور settype() می توانید نوع یک متغیر را تغییر دهید. براي این کار باید نام متغیر و نوع متغیر که می خواهید به آن تغییر یابد را در بین پرانتز و با فاصله یک کاما در بینشان مشخص نمایید. ( در مثال به جای() از علامتهای <> استفاده کنید)
(head
)
(title
)صفحه وب تست(/title
)
(/head
)
(body
)
(?php
$undecided = 3.14;
print gettype( $undecided ); // double
print " -- $undecided
"; // 3.14
settype( $undecided, integer );
print gettype( $undecided ); // integer
print " -- $undecided
"; // 3
?)
(/body
)