آموزش نکاتی قابل توجه برای تابع ها پی اچ پی

دسته بندی: آموزش
زمان مطالعه: 6 دقیقه
۱۷ مرداد ۱۳۹۱

در این بخش ، از سری آموزش PHP شما را با تابع‌های مربوط به داده‌ها از قبیل تبدیل نوع ، چک کردن نوع فعلی و... آشنا خواهیم ساخت ، همچنین در این بخش شما را با ثابت‌ها در PHP آشنا خواهیم ساخت.

تغییر نوع داده‌ها به صورت مستقیم در PHP :

همانطور که در بخش‌های پیشین گفته بودیم ، زبان PHP شامل چندین نوع ، نوع داده ای میباشد ، از قبیل : integer , string , object , array و... در این بخش قصد داریم پس از تعریف متغیر ، در هنگام نیاز ، نوع داده ای خود را با استفاده از تابع‌های از پیش آماده شده در زبان php تبدیل نمائیم.

داده‌ها در زبان php ، بسیار ساده هستند ، و البته هوشمند ، اما شاید از خودتان بپرسید چرا از کلمه هوشمند استفاده کردم؟؟؟برای درک هوشمندی داده‌ها در php به مثال زیر توجه نمائید :

<?php
$result=50; // integer
$string = "100"; // string
echo $output = $result + $string;
?></p>
<p style="text-align: left;">

بعد از اجرا کردن کد فوق ، حتما خروجی را مشاهده نموده اید ، که برابر با 150 می‌باشد ، اما چرا 150؟؟؟

در قسمت اول کد فوق ، ما یک متغیر با مقدار 50 تعریف نموده ایم و در خط دوم یک متغیر دیگر با مقدار رشته 100 ، توجه کنید رشته 100 تعریف نموده ایم (این متغیر در حال حاضر یک رشته محسوب می‌شود و یک عدد نیست!) و در خط آخر کد ، ما دو متغیر را با یکدیگر جمع نموده ایم ، سپس در یک متغیر قرار داده ایم و آن را چاپ کرده ایم.

اما نکته قابل اینجاست که در زمان جمع کردن دو متغیر ، php به صورت هوشمندانه تبدیل نوع را انجام می‌دهد و متغیر رشته ای ما را به یک integer تبدیل می‌کند.

حال به مثال زیر نیز توجه نمائید :

<?php
$result="7 learn"; // integer
$string = 20; // string
echo $output = $result + $string;
?>

به نظر شما خروجی کد فوق چیست؟؟؟ در خط اول این کد ، ما یک متغیر با مقدار 7 learn تعریف نموده ایم ، سپس یک متغیر دیگر با مقدار 20 ایجاد نموده ایم اما وقتی که دو متغیر پس از اعمال جمع ، چاپ نموده ایم ، خروجی به ما 27 نمایش داده است ، پس شاید تا به حال متوجه شده باشید که php از رشته صرف نظر نموده و فقط اعداد را با یکدیگر جمع می‌کند.

دریافت نوع داده ای یک متغیر :

اگر شما بخواهید بفهمید که یک متغیر از چه نوع داده ای می‌باشد ، و یا قصد دارید در یک شرط و حلقه ، مشخص کنید که متغیر شما اگر از نوع خاماصی بود کار خاصی را انج دهد، از تابع gettype استفاده می‌شود.

تابع gettype ، نوع متغیر مورد نظر شما را بر می‌گرداند ، که 8 مقدار را از قبیل integer , boolean , double , object ,resource , string , unknown type بر می‌گرداند.

به مثال زیر توجه نمائید :

<?php
$result="7 learn"; // integer
$string = 20; // string
echo  gettype($string) . "<br>";
echo  gettype($result) . "<br>";
?>

در مثال فوق ، با استفاده از تابع gettype ، نوع متغیرهای ایجاد شده توسط ما را چاپ می‌نماید.

برای آشنایی بیشتر به مثال زیر نیز توجه نمائید :

<?php

$data = array(1, 1., NULL, new stdClass, 'foo');

foreach ($data as $value) {
echo gettype($value) . "<br>", "\n";
}

?>

در قطعه کد فوق ، ما یک آرایه ، متشکل از چندین نوع ، نوع داده ای تعریف نموده ایم ، سپس با قرار دادن یک حلقه برای روی آرایه (foreach) و استفاده از تابع gettype نوع‌های مقادیر آرایه را بر می‌گردانیم .

تابع‌های تعیین کننده ی نوع داده ای :

حدود 10 تابع در php وجود دارد که برای تعیین نوع یک متغیر به کار می‌روند :

  • is_array :مشخص کننده متغیری از نوع آرایه می‌باشد.
  • is_bool : مشخص می‌کند که آیا متغیر از نوع boolean هست یا خیر.
  • is_floot : مشخص می‌کند که آیا متغیر اعشاری است یا خیر.
  • is_integer : مشخص می‌کند که آیا متغیر از نوع صحیح است یا خیر.
  • is_null : مشخص می‌کند که آیا متغیر  از نوع تهی است یا خیر.
  • is_numeric : مشخص می‌کند که آیا متغیر از نوع عددی است یا خیر.
  • is_object : مشخص می‌کند که آیا متغیر یک شی است یا خیر.
  • is_resource : این تابع برای مشخص کردن وجود منبع می‌باشد .
  • is_scalar : مشخص می‌کند که آیا متغیر از نوع عددی است یا خیر.
  • is_string : مشخص می‌کند که آیا متغیر از نوع رشته ای است یا خیر.

مثال هایی برای تعیین کننده ی نوع متغیر :

<?php
$var=5;

if(is_null($var))
echo 'null';
if(is_string($var))
echo 'string';
if(is_array($var))
echo 'array';
if(is_int($var))
echo 'integer';
if(is_bool($var))
echo 'boolean';
if(is_float($var))
echo 'float';

?>

در قطعه کد فوق ، یک متغیر با مقدار 5 که می‌شود از نوع integer تعریف نموده ایم ، سپس این متغیر با تابع‌های مختلف تعیین نوع ، مقایسه می‌شود و خروجی ما integer بر می‌گردد.

یک مثال برای resource :

<?php

$db_link = @mysql_connect('localhost', 'mysql_user', 'mysql_pass');
if (!is_resource($db_link)) {
die('Can\'t connect : ' . mysql_error());
}

?>

در قطعه کد بالا ، ما از دیتابیس استفاده نموده ایم ، فعلا به کد اصلی کاری نخواهیم داشت ، در فصل‌های آینده کار با دیتابیس را خواهیم گفت ، ولی در خط دوم این قطعه کد ، ما یک شرط قرار داده ایم که اگر آدرس ویا اطلاعات دیتابیس ما غلط بود (با استفاده از is_resource) ، برنامه exit شود.

ثابت‌ها در php :

در ابتدا بهتر مفهوم ثابت را برای شما قابل درک نمائیم ، ثابت دقیقا کاربردی همانند یک متغیر را دارد ولی با این تفاوت که مقدار یک ثابت ، در طول برنامه ، به هیچ عنوان تغییر پیدا نمیکند و تنها مقدار اوایه خود را حفظ می‌نماید ، ثوابت در php بدین صورت تعریف می‌شوند:

<?php
define("milad",17);
?>

ثابت‌ها در برنامه‌ها بسیار کاربردی هستند ، اگر بخواهیم یک مثال برای درک مفهوم ثوابت بزنیم ،  عدد پی یا 3.14 بهترین مثال است :

<?php
define("PI",3.14);
echo $result= 5 * PI;
?>

نکته :

برای تعریف یک ثابت از علامت $ استفاده نمی‌شود ، همچنین برای چاپ مقدار یک ثابت نیز از $ استفاده نمی‌شود.

نکته :

بعد از اینکه یک ثابت را با مقدار اولیه تعریف نمودید ، در طی برنامه ، به هیچ عنوان نمی‌توانید مقدار آن را تغییر دهید.

نکته :

ثابت‌ها همواره و به صورت Default در php به صورت Global یا عمومی تعریف می‌شوند ، و در کل برنامه قابل دسترسی هستند.

ان شاالله در قسمت بعدی آموزش ، شما را با نوشتن تابع ، تابع‌های بازگشتی ، و قلمرو متغیر‌ها آشنا خواهیم ساخت ،  قسمت بعدی آموزش ، قسمت پایانی بخش Basic آموزش php می‌باشد ، به امید خدا ، اولین پروژه کاربردی را از جلسه بعد شروع خواهیم کرد.

چه امتیازی به این مقاله می دید؟
نویسنده میلاد حیدری
19 ساله، ساکن تهران و دانشجوی مهندسی کامپیوتر ؛طراح وب سایت ، سئو کار با سابقه کاری ، مطالعه بسیار زیاد در امر سئو و برندینگ اینترنتی و آشنایی با زبان های همچون PHP,JavaScript,html5,CSS3, Jquery ، با زبان انگلیسی آشنایی کامل دارم و شدیدا طرفدار استقلال و فرهاد مجیدی هستم.

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.

نظرات کاربران

elnaz

ba salam
mataleb khobe faghat lotf konid to porojhe tozih bedin

احسان امیدی

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

علی حیدری

دیر ب دیر میپستی این بخشو حاج میلاد.اما خو بازم دمت مشعل المپیک.

لقمان آوند

مطلب مفیدی بود … مثل بقیه مطالبت .

میلاد حیدری

شما لطف دارید

hatyla

خسته نباشید