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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
17 פוסטים 2 כותבים 1.5k צפיות 1 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD dovid

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

    chagoldC מנותק
    chagoldC מנותק
    chagold
    כתב ב נערך לאחרונה על ידי 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
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום