عکس پیش‌فرض نوشته

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

برای اینکه بتوانید تابعی در PHP تعریف کنید تا به تعداد نامشخص پارامتر ورودی دریافت کند، دو راه اصلی خواهید داشت.

تابع با تعداد ورودی نامشخص در PHP

 

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

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

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

برای مثال به قطعه کد زیر که تعریف تابعی برای محاسبه میانگین اعداد ورودی است توجه کنید:

function mean($args, $size){

	$sum = 0;

	for($i=0; $i<$size; $i++){
		$sum += $args[$i];
	}

	echo $sum/$size;

}


mean(array(1,2,3,4,5),5);	// output is: 3

 

در تابع فوق، آرایه را با متغیر $args و اندازه آن را با متغیر $size ورودی گرفته ایم.

سپس عملیات های مربوط به محاسبه میانگین اعداد درون آرایه $args انجام شده و در پایان خروجی مورد نظر چاپ شده است.

این تابع صرفا یک مثال جهت فهم بهتر موضوع هست و به همین شیوه میتوانید هر تابعی با عملیات های مورد نظر خود را پیاده سازی کنید و در نهایت، نتیجه خود را چاپ کرده یا آن را برگردانید. (return کنید)

اگر بخواهیم به جای پاس دادن اندازه آرایه، آن را در خود تابع به دست بیاوریم، میتوان تابع را به صورت زیر نوشت:

function mean($args) {
	$sum = 0;
	$size = count($args);

	for($i=0; $i<$size; $i++){
		$sum += $args[$i];
	}
	echo $sum/$size;


}

 

 

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

در این روش باید توجه داشت که در تعریف تابع، نباید هیچ گونه متغیر ورودی برای آن مشخص شود!

در ابتدای تابع، برای دریافت آرگومان های ورودی داده شده از تابع func_get_args() استفاده میشود. این تابع تمام پارامتر های ورودی داده شده به تابع را به صورت یک آرایه به ما بازمیگرداند.

به تابع زیر توجه کنید:

function mean() {
	$args = func_get_args();
	$sum = 0;
	$size = count($args);

	for($i=0; $i<$size; $i++){
		$sum += $args[$i];
	}
	echo $sum/$size;

}

mean(1,2,3,4,5);	// output is: 3

 

حتماً توجه داشته باشید که در کد فوق، مقادیر و اعداد ما به عنوان ورودی های مختلف و نه به صورت یک آرایه برای تابع ارسال شده اند.

به همین سادگی میتوانید توابعی تعریف کنید که به تعداد دلخواه ورودی بگیرند.

به جای محاسبه اندازه آرایه، از تابع func_num_args() نیز استفاده میشود. این تابع یک عدد که مشخص کننده تعداد آرگومان های ورودی تابع در هنگام فراخوانی است را به ما میدهد.

 

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

 

تعریف تابع با تعداد نامشخص ورودی، در توابع با اهداف مختلفی کاربرد دارد. به عنوان یک مثال دیگر، اگر بخواهیم تعدادی رشته متنی را برای تابعی که ظیفه اش چاپ کردن هر ورودی در یک خط است ارسال کنیم و نتیجه دلخواهمان را مشاهده کنیم، تابع زیر برای کار ما مناسب خواهد بود.

function printInEachLine() {
	$args = func_get_args();

	foreach ($args as $k => $v) {
		echo "line ".($k+1).": $v" .'<br>';
	}
}

printInEachLine("Welcome to", "Sabzelco Website", "Visit other pages!");

 

خروجی کد بالا به صورت زیر خواهد بود:

/* output of above function */
line 1: Welcome to
line 2: Sabzelco Website
line 3: Visit other pages!

 

 

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