مقدار برگشتی از یک تابع

توابع می توانند مقدار برگشتی از هر نوع داده ای داشته باشند. این مقادیر می توانند در محاسبات یا به دست آوردن یک داده مورد استفاده قرار بگیرند. در زندگی روزمره فرض کنید که کارمند شما یک تابع است و شما او را صدا می زنید و از او می خواهید که کار یک سند را به پایان برساند. سپس از او می خواهید که بعد از اتمام کارش سند را به شما تحویل دهد.
سند همان مقدار برگشتی تابع است. نکته مهم در مورد یک تابع، مقدار برگشتی و نحوه استفاده شما از آن است. برگشت یک مقدار از یک تابع آسان است. کافیست در تعریف تابع به روش زیر عمل کنید :

function MethodName()
{
    return value;
}

همانطور که مشاهده می کنید مقدار بازگشتي از تابع یعنی value را جلوي دستور return مي نويسيم. مثال زیر یک تابع که دارای مقدار برگشتی است را نشان می دهد :

   1:<?php
   2:
   3:    function CalculateSum()
   4:    {
   5:        $firstNumber = 10;
   6:        $secondNumber = 5 ;
   7:        $sum = $firstNumber + $secondNumber ;
   8:
   9:        return $sum;
  10:    }
  11:
  12:    $result = CalculateSum();
  13:    echo $result;
  14:
  15:?>
15

در خطوط 5 و 6 مثال فوق، دو متغیر تعریف و مقدار دهی شده اند. توجه کنید که این متغیرها، متغیرهای محلی هستند. و این بدان معنی است که این متغیرها در سایر تابعها قابل دسترسی نیستند و فقط در تابعی که در آن تعریف شده اند قابل استفاده هستند. در خط 7 جمع دو متغیر در متغیر sum قرار می گیرد. در خط 9 مقدار برگشتی sum توسط دستور return فراخوانی می شود. در خط 12 یک متغیر به نام result تعریف می کنیم و تابع CalculateSum() را فراخوانی می کنیم.

تابع CalculateSum() مقدار 15 را بر می گرداند که در داخل متغیر result ذخیره می شود. در خط 13 مقدار ذخیره شده در متغیر result چاپ می شود. تابعی که در این مثال ذکر شد تابع کاربردی و مفیدی نیست.با وجودیکه کدهای زیادی در تابع بالا نوشته شده ولی همیشه مقدار برگشتی 15 است، در حالیکه می توانستیم به راحتی یک متغیر تعریف کرده و مقدار 15 را به آن اختصاص دهیم. این تابع در صورتی کارامد است که پارامترهایی به آن اضافه شود که در درسهای آینده توضیح خواهیم داد. هنگامی که می خواهیم در داخل یک تابع از دستور if یا switch استفاده کنیم باید تمام کدها دارای مقدار برگشتی باشند. برای درک بهتر این مطلب به مثال زیر توجه کنید :

   1:<?php
   2:
   3:    function GetNumber()
   4:    {
   5:        $number = 11 ;
   6:
   7:        if ($number > 10)  
   8:        {                  
   9:            return $number;
  10:        }                  
  12:        else               
  13:        {                  
  14:            return 0;      
  15:        }                  
  16:    }
  17:
  18:    $result = GetNumber();
  19:    echo $result;
  20:
  21:?>
11

در خطوط 16-3 یک تابع با نام GetNumber() تعریف شده است. در خط 5 متغیری با مقدار 11 مقداردهی شده است که در خط خط 7 با مقدار 10 مقایسه می شود و چون مقدار این متغیر از 10 بیشتر است پس دستور return اول مقدار 11 را برمی گرداند. حال اگر مقدار این متغیر از 10 کمتر باشد دستور return مربوط به قسمت else اجرا و مقدار صفر چاپ می شود. که از کاربر یک عدد بزرگتر از 10 را می خواهد. اگر قسمت else دستور if و یا دستور return را از آن حذف کنیم در هنگام اجرای برنامه نتیجه چاپ نمی شود. چون اگر شرط دستور if نادرست باشد برنامه به قسمت else می رود تا مقدار صفر را بر گرداند و چون قسمت else حذف شده است برنامه هیچ مقداری را چاپ نمی کند و همچنین اگر دستور return حذف شود چون برنامه نیاز به مقدار برگشتی دارد برنامه هیچ مقداری را چاپ نمی کند.و آخرین مطلبی که در این درس می خواهیم به شما آموزش دهیم این است که شما می توانید از یک تابع که مقدار برگشتی ندارد خارج شوید. استفاده از return باعث خروج از بدنه تابع و اجرای کدهای بعد از آن می شود.

<?php

    function TestReturnExit()
    {
        echo 'Line 1 inside the method TestReturnExit()';

        return;

        echo 'Line 2 inside the method TestReturnExit()';
    }

    TestReturnExit();

?>
Line 1 inside the method TestReturnExit()

در برنامه بالا نحوه خروج از تابع با استفاده از کلمه کلیدی return و نادیده گرفتن همه کدهای بعد از این کلمه کلیدی نشان داده شده است. در پایان برنامه تابع تعریف شده (TestReturnExit()) فراخوانی و اجرا می شود.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر مطرح بفرمایید.

  1. حمید پاسخ دادن

    باتشکرآموزشها خوب هستندولی پیشنهادمن این هست همراه بایک پروزه کوچک باشه بسیارعالی میشد.

    • یونس ابراهیمی پاسخ دادن

      حتما همین کار رو می کنم… فقط مبانی رو توضیح بدم بعدش ….