توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : توضیح ساده برای تابع و نحوه استفاده اون
aria-adword
February 13th, 2012, 00:10
نمی دونم چرا با این بخش پی اچ پی ارتباط بر قرار نمیکنم
کسی میتونه به زبان خودمونی تابع رو تعریف کنه و یک مثال درست درمون و کاربردی هم براش بزنه
ممنون میشم شیر فهمم کنید
ali2k
February 13th, 2012, 00:48
تابع یک تکه کد پی اچ پی هست که یک اسم دارد و هروقت شما این اسم را اصلاحا صدا بزنید یا فراخوانی کنید ان تکه کد اجرا میشود.
مثال:
یک تابع ساده
function chap(){
echo 'my name is ali';
}
chap();
chap();
ساختار تابع در پی اچ پی ساده است اول کلمه function و بعد نام تابع سپس بدنه تابع که با { شروع میشه و با } بسته میشه :) برای اجرا تابع هم کافیه اسمش را بنویسید مثلا تابع مثال بالا اسمش chap() هست و دوبار من فراخونیش کردن با نوشتن اسمش :) هربار که صداش میزنم دستور echo اجرا میشه.
حالا که متوجه ساختار تابع شدید یکمی تکمیلتر یاد بگیرید ، تابع میتونه یکسری ورودی بگیره مثلا همین تابعی که اسمش chap() بود میتونه ورودی هم بگیره به این شکل
function chap($str){
echo $str;
}
chap('hello ali');
chap('hi ali');
داخل پرانتز شما میتونید ورودی تابع را مشخص کنید مثلا الان تابع مثال ما اسم chap هست و ورودیش متغییر $str که دوبار فراخوانی کردیمش و هربار که فراخوانی میشه عبارتی که به عنوان ورودی داده شده را چاپ میکنه :)
و در ادامه تابع میتونه خروجی داشته باشه با دستور return که فعلا تا همینجا کافیه :)
aria-adword
February 13th, 2012, 00:55
واقعا ممنونم دقیقا با مثال دوم مشکل دارم
شما یه تابع تعریف کردی و یک متغیر
موقع تعریف تابع هم گفتی مقدار تابع همون مقدار متغیر باشه
حالا هر وقت تابع رو صدا کنی هر مقداری که توی اون متغیر باشه نمایش داده میشه؟
درسته؟
اگر لازمه که این بخش بیشتر ادامه داشتهباشه ممنون میشم که ادامه بدید
ali2k
February 13th, 2012, 01:12
متغییری که به عنوان ورودی تابع تعریف میکنید فقط داخل بدنه تابع وجود داره و قابل استفاده است و مقدارش هم با فراخوانی تابع مشخص میشه و مقدار نداره تا زمانیکه تابع را صدا بزنید.
به این مثال دقت کنید
$str='hey boy';
function chap($str){
echo $str;
}
chap('test1');
chap('test2');
echo $str;
خروجی این مثال به این شکل خواهد بود
test1
test2
hey boy
دقت کنید یک متغییر به اسم $str درست کردیم و مقدار بهش دادیم بعد تابع را تعریف کردیم و دو بار با مقدار های مختلف صداش زدیم ، اسم متغییر ورودی تابع $str است ولی این اسم با اینکه هم اسم $str تعریف شده قبل تابع است ولی هیچ ربطی به هم ندارند ، هر مقداری که زمان صدا زدن تابع بدهید مثل test1 یا test2 همان مقدار در متغییر $str ورودی تابع میشینه و در بدنه تابع هم استفاده میشه
حالا به echo اخر دقت کنید وقتی بعد از صدا زدن تابع مقدار $str را چاپ میکنیم همان مقدار hey boy که اول بهش داده بودیم چاپ میشه یعنی ؟ ورودی تابع یک متغییر مستقل هست که هیچ ربطی به متغییر های دیگه نداره حتی اگر متغییری هم نامش هم وجود داشته باشه و زمان صدا زدن تابع مقدار میگیره ، در بدنه تابع قابل استفاده است و بعد از اجرای تابع از بین میره ...
---------- Post added at 01:12 AM ---------- Previous post was at 01:09 AM ----------
این سایت هم یک ابزار خوب هست که میتوانید مثال های بالا را انلاین اجرا کنید و نتیجه اش را ببینید
Test run php code online, right here - WriteCodeOnline.com/PHP (http://writecodeonline.com/php/)
aria-adword
February 13th, 2012, 01:31
متغییری که به عنوان ورودی تابع تعریف میکنید فقط داخل بدنه تابع وجود داره و قابل استفاده است و مقدارش هم با فراخوانی تابع مشخص میشه و مقدار نداره تا زمانیکه تابع را صدا بزنید.
به این مثال دقت کنید
$str='hey boy';
function chap($str){
echo $str;
}
chap('test1');
chap('test2');
echo $str;
خروجی این مثال به این شکل خواهد بود
test1
test2
hey boy
دقت کنید یک متغییر به اسم $str درست کردیم و مقدار بهش دادیم بعد تابع را تعریف کردیم و دو بار با مقدار های مختلف صداش زدیم ، اسم متغییر ورودی تابع $str است ولی این اسم با اینکه هم اسم $str تعریف شده قبل تابع است ولی هیچ ربطی به هم ندارند ، هر مقداری که زمان صدا زدن تابع بدهید مثل test1 یا test2 همان مقدار در متغییر $str ورودی تابع میشینه و در بدنه تابع هم استفاده میشه
حالا به echo اخر دقت کنید وقتی بعد از صدا زدن تابع مقدار $str را چاپ میکنیم همان مقدار hey boy که اول بهش داده بودیم چاپ میشه یعنی ؟ ورودی تابع یک متغییر مستقل هست که هیچ ربطی به متغییر های دیگه نداره حتی اگر متغییری هم نامش هم وجود داشته باشه و زمان صدا زدن تابع مقدار میگیره ، در بدنه تابع قابل استفاده است و بعد از اجرای تابع از بین میره ...
---------- Post added at 01:12 AM ---------- Previous post was at 01:09 AM ----------
این سایت هم یک ابزار خوب هست که میتوانید مثال های بالا را انلاین اجرا کنید و نتیجه اش را ببینید
Test run php code online, right here - WriteCodeOnline.com/PHP (http://writecodeonline.com/php/)
مثال هات خوب آدمو شیرفهم میکنه یاد دادن یک هنره که من ندارم ولی معلومه شما خوب اینکار رو بلدی
از توضیحاتت ممنونم
تا هر وقت و هر موقع کهخ ودت صلاح دونستی این تایک رو ادامه بده من که نیاز دارم هر وقت هم احساس کردی کافیه خودت اطلاع بده
مرسی
Mehrvarzan
February 15th, 2012, 09:05
من تکمیل میکنم.
توابع یا همون متدها کاربرهای دیگه ای هم دارن.
برای مثال همینطور که شما میتونید مقداری رو براش ارسال کنید میتونید مقداری رو هم ازش بگیرید
برای مثال
<?php
$array[name]="farshad";
$array[family]="mehrvarzan";
function get_name($row){
return $array[$row];
}
?>
حالا اگه تابع رو با مقداری که میخواید صدا بزنید فرضا براش name رو بفرستید به شما farshad برمیگردونه.
<?php
$name=get_name('name');
print "My name is '$name' and my family is 'get_name(family)' ";
?>
ali2k
February 15th, 2012, 10:21
جسارتا من کدمثال بالا رو اصلاح کردم ،
1- چون متغییر $array خارج از تابع تعریف شده و تابع یک تیکه کدکاملا مستقل است باید داخل تابع متغییر $array را به صورت global تعریف کنید تا تابع بتواند به این متغییر دسترسی داشته باشد و از آن استفاده کند.
2- در فراخوانی تابع در دستور print یا echo نمی توانید تابع را داخل عبارت صدا بزنید و باید ابتدا عبارت را ببندید سپس با . (عامل join رشته در php) خروجی تابع را با عبارت مورد نظر پیوند بزنید.
مثلا:
print "My name is '$name' and my family is 'get_name(family)' ";
این نوع فراخوانی تابع را اجرا نمی کند و عینا عبارت get_name(family) را چاپ می کند مثل یک کلمه انگلیسی
print "My name is '$name' and my family is ".get_name('family')." ";
ولی به این صورت تابع اجرا می شود و مقدار بازگشتی تابع چاپ می شود.
کد اصلاح شده مثال بالا:
$array[name]="farshad";
$array[family]="mehrvarzan";
function get_name($row){
global $array;
return $array[$row];
}
$name=get_name('name');
print "My name is '$name' and my family is ".get_name('family')." ";
ببخشید جسارت نباشه صرفا جهت تکمیل گفته های شما نوشتم.