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

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

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

שרשור פרמטרים של array בקוד php

מתוזמן נעוץ נעול הועבר תכנות
17 פוסטים 2 כותבים 1.3k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • chagoldC מנותק
    chagoldC מנותק
    chagold
    השיב לdovid ב נערך לאחרונה על ידי chagold
    #7

    @dovid אמר בשרשור פרמטרים של array בקוד php:

    תרא

    הבעיה שהקוד הוא ענק, ולא ניתן להציג את כולו במסגרת הזאת (אולי אם יש משהו תואם ל-JSFIDDLE ל-PHP?).

    בכל אופן, אנסה להציג ככה:
    אני צריך להזין שRRAY לתוך איברים ב-ARRAY. במקרה הקלאסי כותבים ככה:

       $root['Objects'] = ARRAY(.....)
    

    כשהמערך שנכנס הוא תוכן תיקיה כל שהיא.
    אבל כיון שאני צריך להזין את התיקיה למיקום ספציפי בתוך הARRAY הקיים, וזה יכול להיות גם תיקיה בדור 3 או 4, אז אני מעדכן ככה:

      $root['Objects']['foldera'] = ARRAY(.....)
    

    עכשיו, זה עוד מצויין כשאני מגדיר את הנתיב ($root['Objects']['foldera']) ידנית, אבל כיון שהתיקיות הם רבות אז אני צריך לעשות פונקציה שתביא לי את הנתיב הנכון, כמו

     $root['Objects']['foldera']
     $root['Objects']['folderb']
    

    והבעיה שכשאני עושה פונקציה, אני מקבל שגיאה בנוסח

       Notice: Undefined variable: $root['Objects']['foldera'] in /var/www/html/folders.php on line 177
    

    (זה לא יעזור לי ליצור את המשתנה ע"י (IF(ISSET כי אני צריך גישה למשנה קיים במערך, השאלה איך ניגשים אליו.

    נ.ב. אני מוכרח לציין שהצורה היחידה שהצלחתי לשרשר את הפונקציה היתה ככה:

      ${'root' . $this->get_string_peremeters_folders()}
    

    תודה רבה

    (נ.ב מתסכל זה כשאתה לא עושה טעות והבאג הוא בקוד, לא כשאתה כתבת לא נכון ולכן לא הבינו אותך).

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

      אני מבין את הבעיה.
      הידע שלי בPHP מוגבל מידי לעזור, לא הצלחתי.
      http://sandbox.onlinephpfunctions.com/code/95d5277b20f359e88efb8c2de3992713d729ea41

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

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

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

        התקדמתי בעזרת חברים:
        http://sandbox.onlinephpfunctions.com/code/3ed381a5489d029d44ad77ee490e920194c34d82

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

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

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

          שתי דברים:
          א. הקוד שלי לא יעיל, בPHP צריך תמיד להחזיר מהפונקציה אובייקט ואיתו להשתמש הלאה.
          ב. דיברתי עם חבר והוא טען בצדק שהרבה יותר הגיוני להשתמש עם רקורסיה, תוך כדי מעבר על התיקיה להוסיף למערך. ככה גם לא צריך לבדוק בכלל עם האיבר קיים. זה גדול עלי וגם האונליין לא ייתן לי לעבור על תיקיה כנראה.

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

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

          תגובה 1 תגובה אחרונה
          2
          • chagoldC מנותק
            chagoldC מנותק
            chagold
            כתב ב נערך לאחרונה על ידי chagold
            #11

            גם אני תפסתי בסופו של דבר (כי מישהו הסביר לי..) שהבעיה היא שהמנוע של PHP קורא את הכל כסטרינג אחד במקום לפצל את הכל לאיברים.
            מה שאומר שצריך לעשות את הרקורציה מתוך הפונקציה ולהצמיד את האיברים ל$ROOT.
            הבעיה שלא ידוע לי אפשרות לשרשר בצורה מותנית את האיברים לפונקציה. כי דבר בסגנון כזה,

            $root . if(iseet(roldera)){['foldera']} . if(iseet(rolderb)){['folderb']};
            

            לא הצלחתי לבצע.

            @dovid אמר בשרשור פרמטרים של array בקוד php:

            ב. דיברתי עם חבר והוא טען בצדק שהרבה יותר הגיוני להשתמש עם רקורסיה, תוך כדי מעבר על התיקיה להוסיף למערך

            אם הבנתי את כוונתך, אז כאן צריך להתחיל מכל הענפים הקטנים, ליצור מהם מערכים ולשרשר אותם אחד אחד עד שמחברים את כולם לגזע. אולי זה הדרך, אבל זה הדבר ש'לא בעדיפות ראשונה'.

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

              לא חושב שהבנת אותי.
              עם איזה פונקציה אתה משתמש בשביל לקבל את הקבצים/התיקיות?

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

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

              תגובה 1 תגובה אחרונה
              0
              • chagoldC מנותק
                chagoldC מנותק
                chagold
                כתב ב נערך לאחרונה על ידי chagold
                #13

                (כתבתי ב-3 חלקים כיון שהוא לא נתן לי לכתוב פוסט ארו יותר מ-100 תוים)

                לא מדובר על קבצים ותיקיות אמיתיים ולכן המבנה של קבלת הנתיב הוא לא בהכרח בסגנון home/dovid/dagim/.

                הפונקציה שעשיתי נותנת לי סטרינג במבנה

                $root['Objects']['foldera']
                

                וכמו שכתבתי התברר שהבעיה היא שהPHP צריך לקבל אובייקטים ולא סטרינג, לכן הוא נתן את השגיאה הנ"ל, בשונה מהמקרה בו הבאתי לו את הנתיב בלי פונקציה, שאז הוא קיבל את זה מצויין, בגלל שהיה לו אובייקטים ממשיים. (המשתנה $root ושתי אובייקטי המשנה שאחריו).

                תגובה 1 תגובה אחרונה
                0
                • chagoldC מנותק
                  chagoldC מנותק
                  chagold
                  כתב ב נערך לאחרונה על ידי
                  #14

                  @dovid אמר בשרשור פרמטרים של array בקוד php:

                  ב. דיברתי עם חבר והוא טען בצדק שהרבה יותר הגיוני להשתמש עם רקורסיה, תוך כדי מעבר על התיקיה להוסיף למערך

                  מישהו ניסה לעזור לי, ונתן לי פונקציה זו, (ואולי התכוונת גם אתה ללולאה בסגנון כזה). בפועל הפתרון שלו לא עונה על הבעיה, כיון שזו צורה רק לגשת למערך, ולא להכניס אחר כך את המערך לאובייקט המקורי (שבשביל זה צריך לבצע פעולת השמה נוספת לתיקיה זו לתוך תיקיית האב ואח"כ אותה גם כן לסב, כשכל פעולה צריכה להריץ כל כל הפונקציה (ברמה שלה)), ונראה לי שגם אם זה אפשרי אבל לא זו הדרך הנכונה.

                  תגובה 1 תגובה אחרונה
                  0
                  • chagoldC מנותק
                    chagoldC מנותק
                    chagold
                    כתב ב נערך לאחרונה על ידי
                    #15

                    חשבתי על 2 כיוונים לפתרון, את הראשונה לא הצלחתי ליישם, והשניה אולי אעשה אותה אם אין פתרון אמיתי,

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

                       $$root = $root;
                       $$root += "['objects']";
                       $$root += "['foldera']";
                       return $$root;
                    

                    בינתיים אני מקבל שגיאה

                        Uncaught Error: Unsupported operand
                    

                    והשניה: להשתמש בספריה הזו, ובאמת לשלוח סטרינג. מקוה שזה ילך
                    https://github.com/adbario/php-dot-notation
                    https://packagist.org/packages/adbario/php-dot-notation

                    ושוב תודה על העזרה וההשקעה.

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

                      בפעם האלף @chagold, אין אופציה לעזור כל עוד אתה לא פורש תמונה נורמלי.
                      אין לי מושג מה הקלט שלך ומה הפלט הרצוי, אתה נמצא ב"אמצע" - הסתדרת למחצה ואתה מבקש עזרה בנקודה בה אתה נתקע. למשל יש לך פונקציה שמייצרת סטרינג $root['Objects']['foldera'], שזו פונקציה מיותרת ובלתי שימושית.
                      אז אתה חפץ להפוך את הסטרינג לייצוג האמיתי שלו בPHP, חבל! קח את הקלט המקורי - ואותו תהפוך לאובייקט מקונן למשל ע"י הקוד שהראתי.
                      הקוד האחרון שלך הוא בכיוון אבל הוא עם הרבה העדר ידע בPHP ועם יותר רצון להצליח נקודתית מאשר ללמוד.

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

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

                      תגובה 1 תגובה אחרונה
                      0
                      • chagoldC מנותק
                        chagoldC מנותק
                        chagold
                        כתב ב נערך לאחרונה על ידי
                        #17

                        @dovid
                        תודה רבה! המשימה הוכתרה בהצלחה.

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

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

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

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