آژانس هواپیمایی
pop up

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

شروع موضوع توسط hba ‏10 جولای 2007 در انجمن PHP

  1. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

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

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    return اجرای تابع رو قطع میكنه.اگه میخوای چند مقدار رو یرگردونی راحت ترین راه اینه كه با return یك آرایه رو برگردونی.
     
  3. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

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

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    الان مشكلت با این چیه؟
    PHP:
    retrun (array(23));
    یه راه دیگه هم هست كه متغیرها رو میفرستی به تابع و مقدار متغیرها در تابع عوض میشن كه بهش میگن call by reference. ولی به نظر من ارسال آرایه راحت تر هست.
     
  5. hmsn

    hmsn کاربر تازه وارد

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

    shahkey Registered User

    تاریخ عضویت:
    ‏16 نوامبر 2005
    نوشته ها:
    1,232
    تشکر شده:
    4
    هر تابع باید یه چیزی رو برگردونه دیگه!
    مگر اینکه یه حلقه داشته باشید که اونوقت با "." اونهارو با هم merge میکنی بعد return میکنی
     
  7. boxilink
  8. firebird

    firebird Registered User

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

    $n 100;
    inc($n);
    echo 
    $n// 101
    php کلاً یه جور شترمرغیه. نه شتره نه مرغه :)
     
  9. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

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

    پس راهی دیگری ندارید؟
     
  10. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    برای "برگردوندن چند مقدار از یک تابع" من همین راهها به ذهنم میرسه. البته برای آرایه اگه تعداد اطلاعات زیاده میتونی از array_push یا [] استفاده کنی و یکی یکی عناصر رو اضافه کنی.
     
  11. miladmovie

    miladmovie مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    1,936
    تشکر شده:
    2
    راستش راه دیگری فکری نکنم باشه چون وقتی یک فانکشن اجرا می شه می ره توی استک و با اولین return می ره و جای PC رو می گیره و شروع می کنه به ادامه برنامه

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

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    با global نمیشه؟!
     
  13. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    نه Global ربطی نداره
    مشکل حل شد یه template engine نوشته بودم لاز می شد
    ولی با همون در یک متغییر حل شد
     
  14. avajang.com .leftavajang.com.right
  15. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    من تمام تابع ها که چند تا مقدار باید برگردونن رو از global استفاده میکنم!!
    یعنی یدونه return و بقیه global !!
    global $variables;

    همین
     
  16. Behzad1984

    Behzad1984 کاربر تازه وارد

    تاریخ عضویت:
    ‏14 جولای 2007
    نوشته ها:
    13
    تشکر شده:
    0
    محل سکونت:
    Tehran, Iran
    این کار اشکال زادیی برنامه، و توسعه آنرا مشکل می کند.

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

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

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