דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. php חיבור מספרים וכו'

php חיבור מספרים וכו'

מתוזמן נעוץ נעול הועבר ארכיון code613m
5 פוסטים 3 כותבים 412 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • C מנותק
    C מנותק
    chaim1989
    כתב ב נערך לאחרונה על ידי
    #1

    שלום וברכה
    אני מקבל ממרכזייה ערך של תוקף כרטיס אשראי נגיד 0517
    בשביל לשדר לחברת אשראי אני צריך שיהיה 1705
    אני מסתבך ומסתבך במשהו שמתכנתי PHP יתנו לי פתרון מיידי
    הוא כאילו מתייחס למשתנה כInt על אף שאני רוצה שיהיה string ניסיתי כמה פתרונות קלאסיים ועדיין אני מסתבך

    $cctokef =0517;
    
    		$cctokef1= strval(substr("$ccnewtokef", 2, 4));
    		$cctokef2=  strval(substr("$ccnewtokef", 0, 2));
        print $cctokef1 . $cctokef2;
    

    פורסם במקור בפורום CODE613 ב16/06/2014 23:07 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      הקוד שלך שגוי קצת:
      א. מרכאות סביב משתנה זבה פשוט מחרוזת במקום פניה למשתנה,
      ב. הstrval אם צריך אותו בכלל (לדעתי לא צריך כי זה משתמע ממילא) לא נמצא במקום הנכון.
      ג. המשתנה הראשון לא מכיל את האפס, כי הוא int כך שלאחר המרה אתה עם 751 במקום 517.
      ד. ccnewtokef לא ידוע לנו מהו ומאיפה בא.

      אבל באמת יש בעיה גם בלי כל זה.
      כשאני מנסה בPHP לכתוב ככה:

      print 0517;
      

      וזה מחזיר 335!
      ההסבר המעצבן הוא שערך שמתחיל באפס מתורגם למספר אוקטלי, טוב אז תזין בלי אפס.

      למעשה, הכי קל לכאורה לקבל את המספר ישירות בסטרינג:

      $cctokef = "0517";
       
      $cctokef1 =  substr($cctokef, 2, 4);
      $cctokef2 =  substr($cctokef, 0, 2);
      print $cctokef1 . $cctokef2;
      
      1. או להישאר עם int ולהחליף את הסדר ע"י קוד כזה:
        ערך א = 0517
        ערך ב = (ערך א / 100) + ( (ערך א % 100) * 100)

        $cctokef = 517;

        print (int)($cctokef / 100) + (($cctokef % 100) * 100);
        רק שאז תהיה בעיה עם האפס במקרה שהקלט כזה: 1705 שזה מחזיר 517 במקום 0517. בשביל זה ניתן להשתמש בפונקציות פורמט, מצאתי לדוגמה פונקציית str_pad היא מקבלת סטרינג ומוסיפה ("מרפדת") לו תו מוביל במספר המתבקש:

        $cctokef = 1705;

        $cctokef = ($cctokef / 100) + (($cctokef % 100) * 100);
        print str_pad((int)$cctokef, 4, '0', STR_PAD_LEFT);

      פורסם במקור בפורום CODE613 ב17/06/2014 12:16 (+03:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      0
      • C מנותק
        C מנותק
        chaim1989
        כתב ב נערך לאחרונה על ידי
        #3

        הבעיה היא שמה שכתבת עובד ב1705 להפוך ל0517 אבל לא עובד ההיפך ואני צריך ההיפך כי הלקוח מקיש כמו שמופיע על הכרטיס אשראי ואני צריך להפוך את זה

        פורסם במקור בפורום CODE613 ב17/06/2014 14:12 (+03:00)

        תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          כתבתי לך להשמיט את האפס, ככה:

          $cctokef = 517;
            
          $cctokef = ($cctokef / 100) + (($cctokef % 100) * 100);
          print str_pad((int)$cctokef, 4, '0', STR_PAD_LEFT);
          

          או לקבל כסטרינג מתחילה, אחרת לא הצלחתי.

          פורסם במקור בפורום CODE613 ב17/06/2014 15:43 (+03:00)

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          0
          • K מנותק
            K מנותק
            kingyes
            כתב ב נערך לאחרונה על ידי
            #5

            דוד - הפתרון שנתת אכן טוב (זה מה שאני הייתי עושה גם).
            בכל אופן, למה אתה ממיר את הקלט ל-int ואז עושה לך תרגיל ואז שוב מחזיר אותו עם 0 בהתחלה?

            אתה יכול ישירות לעבוד עם ה-str_pad() ולסגור את הפינה הזאת (תכניס אותו כ-string מלכתחילה).

            פורסם במקור בפורום CODE613 ב17/06/2014 23:14 (+03:00)

            תגובה 1 תגובה אחרונה
            1

            בא תתחבר לדף היומי!
            • התחברות

            • אין לך חשבון עדיין? הרשמה

            • התחברו או הירשמו כדי לחפש.
            • פוסט ראשון
              פוסט אחרון
            0
            • דף הבית
            • קטגוריות
            • פוסטים אחרונים
            • משתמשים
            • חיפוש
            • חוקי הפורום