جشنواره نوروزی سون لرن

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

دسته بندی: آموزش
زمان مطالعه: 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

خسته نباشید

نیاز به لاگین

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