-
@יוסף-בן-שמעון
הבעיה שלי הוא שלפעמים אני מחפש 3 ולפעמים 33 ולפעמים 333
איך אני גורם לו שיחפש דווקא את מה שהגדרתי לו? -
@לעזור-לכולם לא הבנתי את השאלה, אולי תפרט קצת מה בדיוק אתה מנסה לעשות
-
@יוסף-בן-שמעון
תודה על העזרה
נגיד שיש לי רשימה מספרית שנראה כך 456876542155555444
ואני רוצה לקבל את מספר ה4 מהרשימה כדי לבצע עליו פעולות אבל אני לא רוצה לקבל את 444 שנמצא בסוף הרשימה -
@לעזור-לכולם ולמה אתה רוצה דוקא את הספרה 4? מה הטריגר שמצריך אותך לחפש ספרות מסוימות?
-
@יוסף-בן-שמעון
זה קצת מסובך אם הינך מאוד מעוניין אכתוב לך -
@לעזור-לכולם אתה לא חייב
יכול להיות שזה יעזור לחברים לעזור לך, כשמבינים את הסיטואציה המלאה יותר קל להתאים פתרונות -
@יוסף-בן-שמעון
או קיי
למשל אם אני מקבל דרך הטלפון סדרת הקשות שאני רוצה לתרגם את זה למוצרים
למשל 20 זה תפוחי אדמה ו 200 זה עגבניות וכן הלאה
אז אני משתמש או בstr_replace או ב preg_replase אבל אם אני אגדיר להחליף את 20 הוא יחליף לי גם את 200 -
@לעזור-לכולם הבעיה שלך זה ניתוח הבעיה וביטויה, עוד לפני הבעיה עצמה.
ההרגשה שהצורך מסובך וצריך לשטוח את כל הרקע המורכב שמביא לצורך, הוא שגוי, זה פשוט שלב אחד לפני הבנה מדוייקת יותר שלך הצורך.
נניח שיש לך קוד חלומי שעושה בדיוק מה שצריך והכל טוב, ואתה רק נדרש לשאלה מה האפיון המדוייק של הקוד הזה ("מקבל מספר, ומקבל הגדרה מה לחפש, והוא מחזיר רשימה, בום!"). -
@לעזור-לכולם אמר בעזרה|חילוץ מספר בPHP:
@יוסף-בן-שמעון
או קיי
למשל אם אני מקבל דרך הטלפון סדרת הקשות שאני רוצה לתרגם את זה למוצרים
למשל 20 זה תפוחי אדמה ו 200 זה עגבניות וכן הלאה
אז אני משתמש או בstr_replace או ב preg_replase אבל אם אני אגדיר להחליף את 20 הוא יחליף לי גם את 200אתה לא צריך להשתמש עם חיפוש והחלפה, יותר הגיוני להשתמש עם מערך אסוציאטיבי.
אבל בשביל לעזור לך יותר תראה לנו קצת קוד שכבר כתבת שנראה איך המספר הזה מאוחסן, ואיך אתה מתמודד איתו עד להחלפה. -
<?php function replace($k){ $array_number = ['/31/','/32/','/33/','/34/','/21/','/22/','/23/','/24/','/61/','/62/','/63/','/64/','/51/','/52/','/53/','/54/','/55/','/41/','/42/','/43/','/44/','/45/','/91/','/92/','/93/','/94/','/95/','/81/','/82/','/83/','/84/','/71/','/72/','/73/','/74/','/01/','/02/']; $array_abc = [ "א","ב","ג",3,"ד","ה","ו",2,"ז","ח","ט",6,"י","כ","ך","ל",5,"מ","נ","ן",4,"ס","ע","פ","ף",9,"צ","ץ","ק",8,"ר","ש","ת",7," ",0]; return preg_replace($array_number,$array_abc,$k); } $a = replace(41526132); print $a;
-
@לעזור-לכולם
לא הבנתי מה זה המערך $array_number זה המערך של המוצרים? ומה זה $array_abc ? -
@יוסף-בן-שמעון
החלפה של מספרים באותיות -
@יוסף-בן-שמעון
ראה פה
https://www.php.net/manual/en/function.preg-replace.phpIf both pattern and replacement parameters are arrays, each pattern will be replaced by the replacement counterpart. If there are fewer elements in the replacement array than in the pattern array, any extra patterns will be replaced by an empty string.
-
@לעזור-לכולם אתה יכול להסביר לי איך מהמספר 41526132
אתה מבין איזה מוצר מדובר? כשאני מבין מהקוד שלך שהמוצרים הם בני מקסימום שני ספרות.
אם אבין אוכל להסביר גם למחשב עם PHP. -
@dovid
אז ככה ניסיתי להסתדר לבד לכן האפרות הראשונה שהיה לי שבמקום ש,555, לדוגמא יהיה שווה ל ,ך, אז הגדרתי ש 53 יהיה שווה ל ,ך,
ואז אכן לא יהיו לי את הבעיה הזאת כי אין שום מספר הדומה לחבירואך לבסוף ברוך השם הסתדרתי
ההסבר
השרת מיד כשפגש את המספר הראשון שהוא מספר קטן הוא מייד תרגם אותו למה שהוגדר ולכן לא מצא אף פעם את המספר הגדול
לכן הגדרתי במערך שקודם יהיה '555' ואחר כך '55' ורק אחר כך '5'תודה לכם
-