|
הרשם | ![]() |
שאלות ותשובות | ![]() |
רשימת חברים | ![]() |
לוח שנה | ![]() |
הודעות מהיום | ![]() |
חיפוש | ![]() |
|
![]() |
![]() |
|
כלים לאשכול | תצורת הצגה |
![]() |
# 1 |
חבר בקהילה
|
חיתוך ע"פ מספר מילים [PHP]
יש לי פסקה עם X מילים, ואני רוצה לחתוך ולקבל רק את הY מילים הראשונות.
איזו פונקציה עושה זאת? תודה מראש. |
![]() |
![]() |
# 2 |
אחראי פורום
|
מה שאני חושב עליו הוא explode ו-array_split
|
![]() |
![]() |
# 4 |
אחראי פורום
|
אתה מדבר על strpos, ו-strpos מקבל רק offSet - לא $count/$limit/$start
|
![]() |
![]() |
# 5 |
חבר וותיק
|
למה צריך פונקציה מוכנה בשביל זה?
PHP קוד:
|
![]() |
![]() |
# 6 | |
אחראי פורום
|
ציטוט:
קוד:
0.60995697975159 seconds for getWords1($str, 5) 1.2931590080261 seconds for getWords2($str, 5) PHP קוד:
|
|
![]() |
![]() |
# 7 |
חבר וותיק
|
אני חייב לציין שהתוצאות שהצגת הפתיעו אותי.
אבל אתה חייב להבין שהשיטה שלי לוגית יעילה יותר. למה? בשיטה שלך עוברים על כל המחרוזת וכשמוצאים את המפריד מפרקים למערך. מסיבה שאני באמת צריך לברר כשמדובר במחרוזות קטנות השיטה שלך מהירה יותר אבל תיקח מחרוזות קצת יותר ארוכות PHP קוד:
והתוצאה קוד:
3.50309419632 seconds for getWords1($str, 5) 1.6103219986 seconds for getWords2($str, 5) |
![]() |
![]() |
# 8 | |
חבר בקהילה
|
ציטוט:
הכי פשוט בעולם, אתה מקבל מערך שכל איבר ממנו זה חלק מהמחרוזת שנחתך לפי התו שסימנת..(a) כשאתה תרצה לחתוך לפני מילים , תעשה שהסימון יהיה לפי (רווח) וזהו, זה יביא לך בכל איבר במערך מילה ואחריה את המילה הבאה |
|
![]() |
![]() |
# 9 |
אחראי פורום
|
ואוו, צודק, שכחתי בכלל לבדוק במחרוזת ארוכה, הממ, גם לי זה מוזר - הייתי מצפה שבמחרוזת ארוכה, דווקא השיטה שלי תיהיה מהירה יותר ושלך איטית יותר - הרי אתה עובר על כל תו בטקסט..
שים לב שהפונקציה שלך איטית יותר ככל שצריך לחתוך יותר מילים(=יותר טקסט לעבור).... הממ, טוב, חוץ משיפור קטן שאפשר לעשות בפונקציה שלך(לפי דעתי להפוך את ה-for ל-do_while, ואת ה-$count++ אל ++$count(כאשר ה-++ לפני המשתנה), גם כדאי לך להפוך את ה-$count < $num וה-$i < $len (להפוך את המיקום שלהם) כי רוב הסיכויים שהעניין של $count יחזיר FALSE לפני $i. עכשיו, במקום $len אתה יכול להשתמש ב-isset. טיפה עבדתי על זה - עדיין יש כמה נקודות לשיפור, אבל, PHP קוד:
הכנתי עוד פונקציה שמשתמשת בעיקרון ה-offSet של strpos PHP קוד:
|
![]() |
![]() |
# 10 | |
חבר וותיק
|
ציטוט:
בקשר לפונקציות שלך אני כבר אסתכל ואני אערוך ![]() עלה לי עוד רעיון בהשראתך איך לשפר את הפונקציה שכתבתי קודם עריכה: טוב הפעם החלטתי לקחת מחרוזת ארוכה יותר ובגלל שלא רציתי להפריע לביצועים של המחשב שלי הרצתי את זה על שרת חלש יותר מהמחשב שלי ולכן התוצאות הן כאלה :P לקחתי את הפוקנציה שלך וחשבתי לעצמי שהגורם המעכב המפריע ביותר כאן הוא הsubstr אז הורדתי אותו ואכן היעילות השתפרה פלאים הפונקציות PHP קוד:
PHP קוד:
התוצאה ברורה ולכן גם המסקנה כזאת ( ![]() אם למישהו יש חשק להסתכל בקוד מקור של PHP ולספר לי מה בדיוק קורה שם עם substr אני אשמח לשמוע :P Last edited by Kfir.G; 27-08-08 at 12:36.. |
|
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|