نمایش نتایج 1 تا 5 از 5

نام تاپیک: تکرار چاپ عدد به حروف در جاهای مختلف صفحه (حل شد)

  1. #1

    تکرار چاپ عدد به حروف در جاهای مختلف صفحه (حل شد)

    سلام دوستان یک فانکشن تبدیل عدد به حروف دارم که به صورت زیر هست :


    function MoneyToLetters($Num)
    {
    function digit_to_persain_letters($money)
    {
    $one = array(
    'صفر',
    'یک',
    'دو',
    'سه',
    'چهار',
    'پنج',
    'شش',
    'هفت',
    'هشت',
    'نه');
    $ten = array(
    '',
    'ده',
    'بیست',
    'سی',
    'چهل',
    'پنجاه',
    'شصت',
    'هفتاد',
    'هشتاد',
    'نود',
    );
    $hundred = array(
    '',
    'یکصد',
    'دویست',
    'سیصد',
    'چهارصد',
    'پانصد',
    'ششصد',
    'هفتصد',
    'هشتصد',
    'نهصد',
    );
    $categories = array(
    '',
    'هزار',
    'میلیون',
    'میلیارد',
    );
    $exceptions = array(
    '',
    'یازده',
    'دوازده',
    'سیزده',
    'چهارده',
    'پانزده',
    'شانزده',
    'هفده',
    'هجده',
    'نوزده',
    );

    if(strlen($money) > count($categories)*3){
    throw new Exception('number is longger!');
    }

    $letters_separator = ' و ';
    $money = (string)(int)$money;
    $money_len = strlen($money);
    $persian_letters = '';

    for($i=$money_len-1; $i>=0; $i-=3){
    $i_one = (int)isset($money[$i]) ? $money[$i] : -1;
    $i_ten = (int)isset($money[$i-1]) ? $money[$i-1] : -1;
    $i_hundred = (int)isset($money[$i-2]) ? $money[$i-2] : -1;

    $isset_one = false;
    $isset_ten = false;
    $isset_hundred = false;

    $letters = '';

    // zero
    if($i_one == 0 && $i_ten < 0 && $i_hundred < 0){
    $letters = $one[$i_one];
    }

    // one
    if(($i >= 0) && $i_one > 0 && $i_ten != 1 && isset($one[$i_one])){
    $letters = $one[$i_one];
    $isset_one = true;
    }

    // ten
    if(($i-1 >= 0) && $i_ten > 0 && isset($ten[$i_ten])){
    if($isset_one){
    $letters = $letters_separator.$letters;
    }

    if($i_one == 0){
    $letters = $ten[$i_ten];
    }
    elseif($i_ten == 1 && $i_one > 0){
    $letters = $exceptions[$i_one];
    }
    else{
    $letters = $ten[$i_ten].$letters;
    }

    $isset_ten = true;
    }

    // hundred
    if(($i-2 >= 0) && $i_hundred > 0 && isset($hundred[$i_hundred])){
    if($isset_ten || $isset_one){
    $letters = $letters_separator.$letters;
    }

    $letters = $hundred[$i_hundred].$letters;
    $isset_hundred = true;
    }

    if($i_one < 1 && $i_ten < 1 && $i_hundred < 1){
    $letters = '';
    }
    else{
    $letters .= ' '.$categories[($money_len-$i-1)/3];
    }

    if(!empty($letters) && $i >= 3){
    $letters = $letters_separator.$letters;
    }

    $persian_letters = $letters.$persian_letters;
    }

    return $persian_letters;
    }

    // طبقه بندی بیشتر را به ابتدای لیست اضافه کنید
    $categories = array(
    'سکستیلیون',
    'کوانتینیارد',
    'کوانتینیوم',
    'کادریلیارد',
    'کادریلیون',
    'تریلیارد',
    'تریلیون',
    'بیلیارد',
    'بیلیون',
    'میلیارد',
    'میلیون',
    'هزار',
    '',
    );

    $Num3="";
    $Num2=explode(',',number_format($Num));
    for($i=0;$i<count($Num2);$i++)
    {
    if($Num2[$i] !=0 )
    {
    $Num3.=digit_to_persain_letters($Num2[$i]);
    $Num3.=" ".$categories[count($categories)-count($Num2)+$i]." ";
    }
    if((($i<count($Num2)-1) && ($Num2[$i+1]) != "000")) $Num3.=" و ";

    }



    return $Num3;
    }



    وقتی میخاهیم فانکشن رو صدا بزنیم از طریق زیر عمل میکنیم :


    echo MoneyToLetters($pkol)."ریال ";

    اما اگر از یک متغیر دیگه در همین صفحه فانکشن رو صدا بزنیم عدد رو به حروف تبدیل نمیکنه

    لطفا دوستان راهنمایی بفرمایند
    آخرین ویرایش به وسیله ruhy : جمعه 29 فروردین 1393 در 22:35 عصر

  2. #2

    نقل قول: تکرار چاپ عدد به حروف در جاهای مختلف صفحه

    مثلا اگر تو همون صفحه

    echo MoneyToLetters($move)."ریال ";



    رو اکو کنیم چیزی نشون داده نمیشه

  3. #3

    نقل قول: تکرار چاپ عدد به حروف در جاهای مختلف صفحه

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

  4. #4

    نقل قول: تکرار چاپ عدد به حروف در جاهای مختلف صفحه

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


    دوستان راهی روش صحیحی

  5. #5

    نقل قول: تکرار چاپ عدد به حروف در جاهای مختلف صفحه

    اقا درست شد اشتباه تابع رو بیرون اورده بودم ممنون

تاپیک های مشابه

  1. سوال: استفاده از یک UpdatePanel برای چند div در جاهای مختلف صفحه
    نوشته شده توسط rozgol در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: یک شنبه 22 اسفند 1389, 12:26 عصر
  2. تابع تبدیل عدد به حروف
    نوشته شده توسط mehrnoosh در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 11
    آخرین پست: جمعه 04 دی 1388, 21:00 عصر
  3. تبدیل عدد به حروف
    نوشته شده توسط Anti_Evil در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 17
    آخرین پست: چهارشنبه 24 بهمن 1386, 07:37 صبح
  4. برنامه ای برای تبدیل عدد به حروف
    نوشته شده توسط aminzadeh_mojtaba در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: چهارشنبه 21 مرداد 1383, 19:11 عصر
  5. بر گردان عدد به حروف
    نوشته شده توسط مطهر در بخش برنامه نویسی در Delphi
    پاسخ: 5
    آخرین پست: پنج شنبه 03 اردیبهشت 1383, 14:50 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •