האם PHP טובה למבני נתונים ואלגוריתמים?
ללמידה שלהם, כן, ברגע שנפטרים מהרגל אחד: לשלוף array לכל דבר. המערך של PHP גמיש מספיק כדי להיות רשימה, מילון ומחסנית, וזה בדיוק מה שמסתיר את העלות של כל פעולה. בנו את המבנים בעצמכם, ו־PHP היא שפה טובה לגמרי לחשוב בה על אלגוריתמים, והשפה הטבעית להתראיין בה אם PHP היא העבודה שלכם.
איזו מחלקת SPL מתאימה לאיזה מבנה נתונים?
SplStack ו־SplQueue הם מחסנית ותור, שניהם בנויים על SplDoublyLinkedList; SplMinHeap ו־SplMaxHeap הן ערימות; SplPriorityQueue היא ערימת מקסימום שמסודרת לפי עדיפות; ו־SplFixedArray הוא מערך בגודל קבוע עם אינדקסים שלמים שצורך פחות זיכרון מ־array. ה־array הרגיל הוא טבלת הגיבוב שלכם. אין מחלקה לעץ, ל־trie או לגרף, ולכן אותם אתם כותבים בעצמכם, בשלבים אחד ושתיים.
למה array_shift איטית לתור ב־PHP?
כי אחרי שהיא מסירה את האיבר הראשון היא ממספרת מחדש מאפס כל מפתח שלם שנשאר, ונוגעת בכל המערך: תור שבנוי על array_shift עולה O(n) לכל הוצאה, וזמן ריבועי כדי לרוקן אותו. השתמשו ב־SplQueue, או החזיקו אינדקס ראש במערך וקדמו אותו במקום. בשלב הראשון אתם בונים תור בעצמכם, וזו הדרך הבטוחה ביותר לראות את ההבדל.
האם sort() יציב ב־PHP?
מאז PHP 8.0, כן: sort(), usort(), asort() ושאר פונקציות המיון שומרות איברים שווים בסדר המקורי שלהם. לפני 8.0 לא הייתה הבטחה כזו, כך שקוד שהסתמך על הסדר של איברים שווים יכול היה להתנהג אחרת בין גרסאות. מבין שמונת המיונים בשלב השלישי, מיון מיזוג ומיון הכנסה יציבים ומיון מהיר ומיון ערימה לא; אחריו תדעו למה.
אילו קורסים במסלול הזה לא נלמדים ב־PHP?
שלושה: תכנות דינמי וסדרת הראיונות של Python, שנלמדים ב־Python, ומניפולציית ביטים, שנלמדת ב־C++. הם מופיעים אחרי השלבים, כל אחד עם קישור שפותח אותו בשפה שלו. טבלת memo ב־PHP היא array שהמפתח שלו הוא תת־הבעיה. מלכודת אחת כשמעבירים טריקים של ביטים: אם שני האופרנדים של &, | או ^ הם מחרוזות, PHP עובדת על ערכי הבתים של התווים שלהן ומחזירה מחרוזת, אז ודאו קודם שהערכים הם מספרים שלמים.
האם צריך לדעת PHP לפני שמתחילים את המסלול?
פונקציות, מערכים, לולאות ומחלקות, לכל הפחות, כי צומת הוא באופן טבעי אובייקט עם מאפיין $next. אם הם חדשים לכם, קורס PHP של Coddy מביא אתכם לשם קודם, בחינם, והמסלול הזה ממשיך מהמקום שבו הוא מסתיים.