fluidfluidfluidfluidfluid

سوال جواب دانشجویی

سوالات و مشکلات خود را مطرح کنید تا سریع به جواب برسید

عنوان سوال : توابع در php
جعفر مرادیان - (سوال کننده)

منطق توابع در php


دلیل ایجاد function در php


پامتر ها چیست؟


آرگومان چیست؟


نحوه فراخانی


اسم گذاری بر روی توابع 


خروجی توابع


نمونه تابع

زهرا یعقوبیان


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


در زیر مثالی از تعریف یک تابع در PHP آورده شده است:


bash
function sum($x, $y) {
    $result = $x + $y;
    return $result;
}


در این مثال، تابع sum دو پارامتر به نام $x و $y دریافت می کند و آن‌ها را با هم جمع می‌کند. سپس مقدار حاصل از جمع را در یک متغیر به نام $result ذخیره می کند و با استفاده از کلمه کلیدی "return"، مقدار $result را به عنوان خروجی تابع بر می گرداند.
برای فراخوانی تابع در PHP، نام تابع به همراه پارامترهای لازم به عنوان ورودی تابع قرار داده می‌شود. 

به عنوان مثال :

bash

$result = sum(2, 3);
echo $result; // نمایش عدد 5


در این مثال، تابع sum با پارامترهای 2 و 3 فراخوانی شده و خروجی آن به عنوان مقدار متغیر $result ذخیره شده و در نهایت با استفاده از تابع echo نمایش داده می‌شود.


توابع در PHP می‌توانند همچنین پارامترهای اختیاری و مقدار پیش‌فرض داشته باشند. برای این کار، می‌توان پارامترهای تابع را با مقدار پیش‌فرض مشخص کرد. در صورتی که برای یک پارامتر مقداری مشخص نشده باشد، مقدار پیش‌فرض برای آن پارامتر استفاده می‌شود.


در زیر مثالی از تعریف یک تابع با پارامترهای اختیاری و مقدار پیش‌فرض آمده است:

php

function welcome($name = "World") {
    echo "Hello, " . $name . "!";
}


در این مثال، تابع welcome یک پارامتر به نام $name دریافت می کند. با استفاده از اپراتور "="، مقدار پیش‌فرض برای این پارامتر "World" مشخص شده است. در صورتی که مقداری به عنوان ورودی برای $name داده نشود، مقدار پیش‌فرض "World" استفاده خواهد شد.


برای فراخوانی تابع با پارامتر اختیاری، می‌توان بدون ورودی برای آن فراخوانی شود یا با دادن مقدار مناسب به عنوان ورودی، فراخوانی شود. به عنوان مثال:

scss
welcome(); // نمایش پیام "Hello, World!"
welcome("John"); // نمایش پیام "Hello, John!"
در این مثال، با فراخوانی تابع welcome بدون ورودی، مقدار پیش‌فرض "World" برای پارامتر $name استفاده شده است. با فراخوانی تابع با ورودی "John"، مقدار ورودی به جای مقدار پیش‌فرض برای $name استفاده شده است و پیام "Hello, John!" نمایش داده می‌شود.


همچنین، توابع در PHP می‌توانند پارامترهای نام‌دار داشته باشند. پارامترهای نام‌دار به برنامه نویسان امکان می دهند تا پارامترهای تابع را بر اساس نامشان به تابع بدهند.


برای تعریف تابع با پارامترهای نام‌دار، باید پارامترها را با نام مورد نظر مشخص کرد. در زیر مثالی از تعریف یک تابع با پارامترهای نام‌دار آمده است:

php

function welcome($name, $age) {
    echo "Hello, " . $name . "! You are " . $age . " years old.";
}


در این مثال، تابع welcome دو پارامتر به نام‌های $name و $age دریافت می‌کند. با استفاده از این پارامترها، پیامی نمایش داده می‌شود که نام و سن شخص را نمایش می‌دهد.


برای فراخوانی تابع با پارامترهای نام‌دار، باید پارامترها را با نام مورد نظر به تابع بدهیم. به عنوان مثال:
perl

welcome($name = "John", $age = 30); // نمایش پیام "Hello, John! You are 30 years old."


در این مثال، پارامترهای نام‌دار $name و $age با مقدارهای "John" و 30 به تابع welcome داده شده‌اند و پیام مورد نظر نمایش داده شده است.


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


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

function calculate_sum($a, $b) {
    $sum = $a + $b;
    return $sum;
}


در این مثال، تابع calculate_sum دو پارامتر به نام‌های $a و $b دریافت می‌کند و جمع این دو عدد را در متغیر $sum محاسبه می‌کند. سپس با دستور return، مقدار $sum به عنوان مقدار بازگشتی تابع تعیین شده است.


برای استفاده از مقدار بازگشتی تابع، باید تابع را فراخوانی کرده و مقدار بازگشتی آن را در یک متغیر ذخیره کنیم. به عنوان مثال:

perl
$result = calculate_sum(10, 20); // $result برابر 30 خواهد بود.
در این مثال، تابع calculate_sum با دو پارامتر 10 و 20 فراخوانی شده است و مقدار بازگشتی آن که برابر با 30 است، در متغیر $result ذخیره شده است.


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


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


به عنوان مثال، تابع زیر یک پارامتر اختیاری به نام $message دارد:
function say_hello($name, $message = "Hello") {
    echo $message . ", " . $name . "!";
}
در این تابع، $name یک پارامتر اجباری است و باید همیشه به عنوان ورودی به تابع داده شود. اما $message یک پارامتر اختیاری است و اگر مقداری به عنوان ورودی به تابع داده نشود، مقدار پیش‌فرض "Hello" برای آن پارامتر در نظر گرفته می‌شود.


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

say_hello("John"); // خروجی: Hello, John!
say_hello("Mary", "Hi"); // خروجی: Hi, Mary!


در مثال بالا، در فراخوانی اول تابع، مقدار پیش‌فرض برای پارامتر $message (یعنی "Hello") برای گفتن سلام به John استفاده شده است. در فراخوانی دوم، مقدار پیش‌فرض با استفاده از ورودی "Hi" جایگزین شده است و پیام "Hi, Mary!" گفته شده است.


با استفاده از پارامترهای اختیاری، می‌توانیم توابعی با قابلیت پیکربندی بیشتر و انعطاف‌پذیری طراحی کنیم.


در PHP، توابع می‌توانند دارای آرایه‌های پویا باشند. آرایه‌های پویا (Dynamic Arrays) ابزاری برای ذخیره و مدیریت داده‌های چندتایی (مانند رشته‌ها، اعداد و ...) هستند که به صورت پویا ایجاد، تغییر و حذف می‌شوند.


برای تعریف یک تابع دارای آرایه پویا، باید نوع داده‌ای آن آرایه و نام آن را در تعریف تابع مشخص کنید. برای مثال، تابع زیر یک آرایه پویا با نام $numbers دارد:

function add_number($number, &$numbers) {
    $numbers[] = $number;
}


در این تابع، $number یک پارامتر اجباری است که به عنوان یک عدد به تابع داده می‌شود. همچنین $numbers یک پارامتر اختیاری است که به صورت یک آرایه پویا تعریف شده است. با استفاده از عملگر []، $number به انتهای آرایه $numbers اضافه می‌شود.


در اینجا، نکته‌ای که باید به آن توجه داشته باشیم، استفاده از علامت & در تعریف پارامتر $numbers است. این علامت به معنای ارجاع به یک متغیر در حافظه است. بدون استفاده از این علامت، هر تغییری که در متغیر $numbers درون تابع اعمال می‌شود، تنها درون تابع اعمال می‌شود و خارج از تابع هیچ تغییری را نشان نمی‌دهد. اما با استفاده از این علامت، تغییراتی که در متغیر $numbers درون تابع اعمال می‌شود، به طور مستقیم در متغیر $numbers خارج از تابع نیز نمایش داده می‌شود.


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

 
 برای مثال، یک تابع محاسبه میانگین یک آرایه از اعداد را می‌توان به صورت زیر تعریف کرد:


function calculate_average($numbers) {
    $sum = 0;
    foreach ($numbers as $number) {
        $sum += $number;
    }
    return $sum / count($numbers);
}


در این تابع، $numbers یک پارامتر اجباری است که به صورت یک آرایه از اعداد به تابع داده می‌شود. در ابتدا، یک متغیر $sum برای محاسبه مجموع اعداد درون آرایه ایجاد می‌شود. سپس با استفاده از حلقه foreach، مقدار هر عدد درون آرایه به $sum اضافه شده و در نهایت میانگین اعداد با تقسیم مجموع بر تعداد اعداد محاسبه می‌شود. خروجی تابع، میانگین اعداد درون آرایه است.


با استفاده از توابع دارای آرایه پویا، می‌توانیم کد PHP خود را بهبود داده و به صورت کلی‌تری با داده‌ها کار کنیم. در واقع، توابع دارای آرایه پویا، یکی از اصلی‌ترین ابزارهای برنامه‌نویسی PHP هستند که در بسیاری از پروژه‌ها مورد استفاده قرار می‌گیرند.


در ادامه، به مثالی از تابع دارای آرایه پویا در PHP می‌پردازیم:

function calculate_statistics($data) {
    $result = array();
    $result['mean'] = array_sum($data) / count($data);
    sort($data);
    $result['median'] = $data[floor(count($data) / 2)];
    $counts = array_count_values($data);
    $result['mode'] = array_search(max($counts), $counts);
    return $result;
}


در این تابع، $data یک پارامتر اجباری است که به صورت یک آرایه از اعداد به تابع داده می‌شود. در ابتدا، یک آرایه خالی با نام $result ایجاد می‌شود که حاوی نتایج محاسباتی خواهد بود. سپس با استفاده از تابع array_sum و count، میانگین اعداد محاسبه شده و در $result['mean'] ذخیره می‌شود.


سپس با استفاده از تابع sort، آرایه $data مرتب می‌شود و میانه اعداد در $result['median'] ذخیره می‌شود. برای محاسبه مد اعداد، از تابع array_count_values استفاده می‌شود که تعداد تکرار هر عدد را در آرایه $counts ذخیره می‌کند. 


سپس با استفاده از تابع max و array_search، عددی که بیشترین تعداد تکرار را دارد به عنوان مد در $result['mode'] ذخیره می‌شود.


در نهایت، آرایه $result که شامل میانگین، میانه و مد اعداد است، به عنوان خروجی تابع بازگردانده می‌شود.
با استفاده از توابع دارای آرایه پویا، می‌توانیم کد PHP خود را بهبود داده و به صورت کلی‌تری با داده‌ها کار کنیم. همچنین، با استفاده از این توابع، می‌توانیم کارهای تکراری و محاسباتی را در کد خود کاهش دهیم و به کدی ساده‌تر و خواناتر دست یابیم.

توابع دیگری نیز در PHP برای کار با آرایه‌ها وجود دارند که در زیر به مثالی از آنها اشاره می‌کنیم:
array_filter: این تابع با دریافت یک آرایه و یک تابع بازگرداننده boolean، تمام مقادیر آرایه را به تابع داده و فقط مقادیری که توسط تابع بازگردانده شده true هستند را در یک آرایه جدید برمی‌گرداند. برای مثال:

function is_even($n) {
    return $n % 2 == 0;
}
$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$filtered = array_filter($arr, 'is_even');


در این مثال، تابع is_even برای بررسی اینکه آیا یک عدد زوج است یا نه، استفاده شده است. سپس با استفاده از تابع array_filter، مقادیر آرایه $arr فیلتر شده و فقط اعداد زوج در $filtered بازگردانده می‌شوند.


array_map: این تابع با دریافت یک آرایه و یک تابع بازگرداننده، تمام مقادیر آرایه را به تابع داده و مقادیری که توسط تابع بازگردانده شده‌اند را در یک آرایه جدید برمی‌گرداند. برای مثال:

function square($n) {
    return $n * $n;
}
$arr = array(1, 2, 3, 4, 5);
$squared = array_map('square', $arr);


در این مثال، تابع square برای محاسبه مربع اعداد استفاده شده است. سپس با استفاده از تابع array_map، تمام مقادیر آرایه $arr به تابع square داده شده و مقادیر محاسبه شده در $squared بازگردانده می‌شوند.


array_reduce: این تابع با دریافت یک آرایه و یک تابع بازگرداننده، تمام مقادیر آرایه را به تابع داده و نتیجه نهایی را برمی‌گرداند. برای مثال:

function add($a, $b) {
    return $a + $b;
}
$arr = array(1,
2, 3, 4, 5);
$sum = array_reduce($arr, 'add');


در این مثال، تابع add برای جمع دو عدد استفاده شده است. سپس با استفاده از تابع array_reduce، تمام مقادیر آرایه $arr به تابع add داده شده و مجموع آن‌ها در $sum بازگردانده می‌شود.
4. array_slice: این تابع با دریافت یک آرایه و شروع و پایان محدوده‌ای از آن، زیرآرایه‌ای از آرایه را برمی‌گرداند. برای مثال:

$arr = array(1, 2, 3, 4, 5);
$sliced = array_slice($arr, 1, 3);


در این مثال، با استفاده از تابع array_slice، محدوده اعداد 2 تا 4 از آرایه $arr در $sliced بازگردانده می‌شود.


5. array_merge: این تابع با دریافت چند آرایه، آنها را با هم ترکیب کرده و یک آرایه جدید با تمام مقادیر این آرایه‌ها را برمی‌گرداند. برای مثال:


$arr1 = array(1, 2, 3);
$arr2 = array(4, 5, 6);
$merged = array_merge($arr1, $arr2);


در این مثال، با استفاده از تابع array_merge، آرایه $arr1 و $arr2 با هم ترکیب شده و در $merged بازگردانده می‌شوند.


توابع دیگری نیز در PHP برای کار با آرایه‌ها وجود دارند که هر کدام با یک مورد خاص از کار با آرایه‌ها سروکار دارند. به هر حال، با آشنایی با این توابع پایه‌ای، می‌توانید برای کار با آرایه‌ها در PHP بسیاری از نیازهای خود را به خوبی برطرف کنید.


in_array: این تابع برای بررسی وجود یک مقدار در آرایه استفاده می‌شود. برای مثال:

$arr = array(1, 2, 3, 4, 5);
if (in_array(3, $arr)) {
    echo '3 exists in the array';
}


در این مثال، با استفاده از تابع in_array، بررسی می‌شود که آیا عدد 3 در آرایه $arr وجود دارد یا خیر.


array_keys: این تابع با دریافت یک آرایه و یک مقدار، تمام کلیدهایی که مقدار داده شده را دارند را در یک آرایه بازگردانده می‌کند. برای مثال:
php


$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 2);
$keys = array_keys($arr, 2);


در این مثال، با استفاده از تابع array_keys، تمام کلیدهایی که مقدار 2 را در آرایه $arr دارند در $keys بازگردانده می‌شوند.


array_map: این تابع با دریافت یک تابع و یک آرایه، هر مقدار آرایه را به تابع داده و مقدار بازگردانده شده را در یک آرایه جدید بازگردانده می‌کند. برای مثال:


$arr = array(1, 2, 3, 4, 5);
$squared = array_map(function($x) { return $x * $x; }, $arr);


در این مثال، با استفاده از تابع array_map، تابعی که عدد را به توان 2 می‌رساند برای هر مقدار آرایه $arr اعمال شده و مقادیر بازگردانده شده در $squared قرار می‌گیرند.


array_filter: این تابع با دریافت یک آرایه و یک تابع، تمام مقادیری که به تابع داده شده، بازگردانده می‌شوند و در یک آرایه جدید ذخیره می‌شوند. برای مثال:


$arr = array(1, 2, 3, 4, 5);
$filtered = array_filter($arr, function($x) { return $x % 2 == 0; });
در این مثال، با استفاده از تابع array_filter، ت



مقادیر آرایه $arr که بر 2 بخش‌پذیر هستند، بازگردانده شده و در $filtered ذخیره می‌شوند.


array_reduce: این تابع با دریافت یک آرایه، یک تابع و یک مقدار اولیه، مقدار نهایی را با استفاده از اعمال تابع به ترکیب تمام مقادیر آرایه با مقدار اولیه محاسبه می‌کند. برای مثال:


$arr = array(1, 2, 3, 4, 5);
$total = array_reduce($arr, function($carry, $item) { return $carry + $item; }, 0);


در این مثال، با استفاده از تابع array_reduce، تابعی که دو عدد را جمع می‌کند برای ترکیب تمام مقادیر آرایه $arr با مقدار اولیه 0 اعمال شده و مقدار نهایی در $total قرار می‌گیرد.


در اینجا، 10 تابع مهم برای کار با آرایه‌ها در PHP معرفی شدند. این توابع نمونه‌هایی از توابعی هستند که در PHP بسیار کاربردی هستند و توانایی‌های زیادی را برای برنامه‌نویسان فراهم می‌کنند.


به طور کلی، کار با آرایه‌ها در PHP از مهمترین قسمت‌های برنامه‌نویسی است. تقریباً در هر برنامه‌ی PHP موجود، احتمال زیادی وجود دارد که نیاز به کار با آرایه‌ها باشد. از آنجایی که آرایه‌ها در PHP به شکل پیش‌فرض به صورت شیء‌گرا عمل می‌کنند، توانایی‌های بسیاری را در اختیار برنامه‌نویسان قرار می‌دهند. با استفاده از توابعی مانند توابع معرفی شده در بالا، برنامه‌نویسان قادر خواهند بود که به راحتی و با سرعت بالا، آرایه‌ها را پردازش کنند و اطلاعات مورد نیاز را از آن‌ها بدست آورند.


همچنین، برنامه‌نویسان با استفاده از توابعی مانند array_map و array_filter می‌توانند کد خود را به شکل بسیار خلاصه‌تر و کارآمدتری نوشته و همچنین به اشکال‌گیری کمتری نیز برخورد کنند. به طور کلی، بهترین روش برای یادگیری کار با آرایه‌ها، تجربه‌ی عملی است.

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

سوالی دارید؟

هر سوالی دارید فقط کافیه سوال خود را مطرح کنید تا از جواب هزاران کاربر سراسر اینترنت اگاه شوید.

نیاز داریم که شما با ما هماهنگ باشید آیا مایل هستید؟

میدونی مشاوره پروژه چیه؟

از صفر تا صد پروژه ات یک متخصص کمکت میکنه تا پروژتون رو انجام بدی نیاز به آموزش داری آموزشت میده باگ داری برات رفع میکنه