מעבר באמצעות לולאות מקוננות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 30 מתוך 68.
כשעובדים עם מערכים דו־ממדיים, לעיתים קרובות צריך לעבד כל איבר ואיבר, ולכן יש לעבור על כל שורה ואז על כל עמודה באותה שורה. כאן לולאות מקוננות הופכות להכרחיות. משתמשים בלולאה אחת בתוך לולאה אחרת כדי לעבור באופן שיטתי על כל מבנה הרשת.
הלולאה החיצונית עוברת על כל שורה במערך הדו־ממדי, ואילו הלולאה הפנימית מעבדת כל איבר בשורה הנוכחית. כך זה עובד עם לולאת foreach:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>אפשר גם להשתמש בלולאות for מסורתיות כשצריך יותר שליטה על האינדקסים. הגישה הזאת מאפשרת לך לגשת למיקומים של השורה ושל העמודה:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>תבנית הלולאות המקוננות הזו חיונית לעיבוד מלא של מערכים דו־ממדיים, בין אם מציגים נתונים, מבצעים חישובים או מחפשים ערכים מסוימים בכל מבנה הרשת.
אתגר
קליתקבל קלט אחד: מערך דו־ממדי המייצג סידור ישיבה בכיתה בפורמט JSON. כל מערך פנימי מייצג שורת מושבים, וכל איבר מכיל שם של תלמיד או מחרוזת ריקה עבור מושב פנוי. קראו את הקלט, המירו את מחרוזת ה-JSON למערך דו־ממדי, השתמשו בלולאות מקוננות כדי לעבור על כל סידור הישיבה, והדפיסו את שמו של כל תלמיד יחד עם המיקום שלו בפורמט: Row X, Seat Y: Name
דלגו על מושבים פנויים (מחרוזות ריקות) והדפיסו מידע רק עבור מושבים תפוסים. מספור השורות והמושבים צריך להתחיל מ-1 (ולא מ-0).
פורמט הקלט: שורה אחת המכילה מערך JSON המייצג את סידור הישיבה (לדוגמה: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])
הפלט הצפוי: כל מושב תפוס יודפס בשורה נפרדת בפורמט Row X, Seat Y: Name, כאשר X הוא מספר השורה ו-Y הוא מספר המושב (שניהם מתחילים מ-1)
נסו בעצמכם
<?php
// קראו את קלט ה-JSON
$input = trim(fgets(STDIN));
// המירו מחרוזת JSON למערך דו-ממדי
$seating = (array)json_decode($input, true);
// TODO: כתבו את הקוד שלכם למטה
// השתמשו בלולאות מקוננות כדי לעבור על השורות והמושבים
// זכרו לדלג על מושבים ריקים ולמספר את השורות והמושבים החל מ-1
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1פונקציות מתקדמות
פונקציות אנונימיותסגירות ו-'use'פונקציות חץפונקציות callbackשימוש ב-'call_user_func'פונקציות משתנותהעברה באמצעות הפניהפונקציות רקורסיביותסיכום: מגוון פונקציות4מערכים רב־ממדיים
יצירת מערך דו־ממדיגישה לאיברי מערך דו־ממדישינוי איברי מערך דו־ממדימעבר באמצעות לולאות מקוננותמערכים אסוציאטיביים דו־ממדייםסיכום: תרגיל רשת פשוטה2מניפולציות מתקדמות במערכים
הוספה באמצעות 'array_push'הסרה באמצעות 'array_pop'הוספה לתחילת המערך באמצעות 'array_unshift'הסרה מתחילת המערך באמצעות 'array_shift'מיזוג מערכים ממוספריםמיזוג מערכים אסוציאטיבייםחילוץ באמצעות 'array_slice'בדיקת ערכים באמצעות 'in_array'חיפוש מפתחות באמצעות 'array_search'סיכום: תרגיל רשימת השמעה3מיון מערכים
מיון מערכים עם אינדקסים בסדר עולהמיון מערכים עם אינדקסים בסדר יורדמיון מערכים אסוציאטיביים לפי ערךמיון מערכים אסוציאטיביים לפי מפתחמיון בסדר טבעימיון מותאם אישית באמצעות 'usort'סיכום: מיון טבלת מוביליםתרגלו בעצמכם: קומפיילר PHP אונליין