برگزیده های پرشین تولز

مقدار گیری چند return

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
در function چند return بدید همه رو نشون نمی ده
مثلا یه function ؤو نمایش میدهید که توش چند بار return استفاده شده یکی از انهارو میگیره نشون میده
چه طوری چند Return میشه ؟
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
return اجرای تابع رو قطع میكنه.اگه میخوای چند مقدار رو یرگردونی راحت ترین راه اینه كه با return یك آرایه رو برگردونی.
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
نه این کار به دردم نمی خوره
یه چیزی مثل return ّگید که مثلا بزنم
return(2)
return(3)
هر دو رو بفرسته بیرون
تابع دیگری نمی شناسید ؟
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
نه این کار به دردم نمی خوره
یه چیزی مثل return ّگید که مثلا بزنم
return(2)
return(3)
هر دو رو بفرسته بیرون
تابع دیگری نمی شناسید ؟
الان مشكلت با این چیه؟
PHP:
retrun (array(2, 3));

یه راه دیگه هم هست كه متغیرها رو میفرستی به تابع و مقدار متغیرها در تابع عوض میشن كه بهش میگن call by reference. ولی به نظر من ارسال آرایه راحت تر هست.
 

hmsn

کاربر تازه وارد
تاریخ عضویت
17 آگوست 2006
نوشته‌ها
196
لایک‌ها
0
سن
37
محل سکونت
تو يه خونمون
ببخشید مگه اشاره گر ها تویه php هم هستن ؟ (یعنی همین call by reference)
 

shahkey

Registered User
تاریخ عضویت
16 نوامبر 2005
نوشته‌ها
1,235
لایک‌ها
5
هر تابع باید یه چیزی رو برگردونه دیگه!
مگر اینکه یه حلقه داشته باشید که اونوقت با "." اونهارو با هم merge میکنی بعد return میکنی
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
ببخشید مگه اشاره گر ها تویه php هم هستن ؟ (یعنی همین call by reference)
pointer به اون معنا که تو C هست تو PHP نداریم ولی call by reference داریم :
PHP:
function inc(&$n) {
	$n++;
}

$n = 100;
inc($n);
echo $n; // 101

php کلاً یه جور شترمرغیه. نه شتره نه مرغه :)
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
من از همین . استفاده می کنم توی یک متغیر Return می کنم
چون خیلی زیاده از ارایه نمی خواهم استفاده کنم

پس راهی دیگری ندارید؟
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
من از همین . استفاده می کنم توی یک متغیر Return می کنم
چون خیلی زیاده از ارایه نمی خواهم استفاده کنم

پس راهی دیگری ندارید؟
برای "برگردوندن چند مقدار از یک تابع" من همین راهها به ذهنم میرسه. البته برای آرایه اگه تعداد اطلاعات زیاده میتونی از array_push یا [] استفاده کنی و یکی یکی عناصر رو اضافه کنی.
 

miladmovie

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
25 دسامبر 2002
نوشته‌ها
1,939
لایک‌ها
3
سن
39
راستش راه دیگری فکری نکنم باشه چون وقتی یک فانکشن اجرا می شه می ره توی استک و با اولین return می ره و جای PC رو می گیره و شروع می کنه به ادامه برنامه

راستی چند نخی هم می شه ها !‌(آلان یادم اومد که داریم PHP می نویسیم ها !!!‌)
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
با global نمیشه؟!
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
نه Global ربطی نداره
مشکل حل شد یه template engine نوشته بودم لاز می شد
ولی با همون در یک متغییر حل شد
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
من تمام تابع ها که چند تا مقدار باید برگردونن رو از global استفاده میکنم!!
یعنی یدونه return و بقیه global !!
global $variables;

همین
 

Behzad1984

کاربر تازه وارد
تاریخ عضویت
14 جولای 2007
نوشته‌ها
13
لایک‌ها
0
سن
40
محل سکونت
Tehran, Iran
من تمام تابع ها که چند تا مقدار باید برگردونن رو از global استفاده میکنم!!
یعنی یدونه return و بقیه global !!
global $variables;

همین

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

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

توابع، ریزبرنامه هایی هستند که به برنامه اصلی خدمت رسانی میکنند،
نه اینکه محتوایی برنامه اصلی را مستقیماً دستکاری کنند؛ این شیوه از
طراحی نرم افزار، بسیار ناشیانه است، چون ردیابی محل بروز خطا را
مشکل می کند و منجر به تولید کد اِسپاگتی میشود، درست مثل
زمانی که از دستورات goto استفاده کنیم که خوشبخاته در زبانهای
جدید منسوخ شده اند.

در یک حالت خوب، میتوانید از کلاسها استفاده کنید؛ متغیرهای هر کلاس،
برای تمام متدهای آن کلاس، Global هستند.
 
بالا