יצירת מערך דו־ממדי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 27 מתוך 68.
מערך רב־ממדי הוא פשוט מערך שמכיל מערכים אחרים כאיברים שלו. הסוג הנפוץ ביותר הוא מערך דו־ממדי, שאפשר לחשוב עליו כרשת עם שורות ועמודות, בדומה לגיליון אלקטרוני או ללוח משחק.
יצירת מערך דו־ממדי ב-PHP היא פשוטה. יוצרים מערך שבו כל איבר הוא בעצמו מערך:
<?php
$gameBoard = [
["", "", ""],
["", "", ""],
["", "", ""]
];
?>כך נוצרת רשת בגודל 3x3, שבה כל מערך פנימי מייצג שורה, וכל איבר בתוך המערכים האלה מייצג עמודה. אפשר גם ליצור מערכים דו־ממדיים עם סוגי נתונים שונים:
<?php
$scores = [
[85, 92, 78],
[90, 88, 95],
[76, 84, 89]
];
?>PHP מספקת גם פונקציה מובנית בשם array_fill() שמאפשרת לך ליצור במהירות מערך שמלא בערך מסוים. היא מקבלת שלושה ארגומנטים: האינדקס ההתחלתי, מספר האיברים והערך שבו למלא:
<?php
// array_fill(start_index, num_elements, value)
$row = array_fill(0, 3, 0); // [0, 0, 0]
?>אפשר לשלב את array_fill() עם עצמה כדי לבנות מערך דו־ממדי ביעילות. לדוגמה, כדי ליצור רשת בגודל 3x3 שבה כל תא מתחיל ב־0:
<?php
$grid = array_fill(0, 3, array_fill(0, 3, 0));
// תוצאה: מערך 3x3 שבו כל איבר הוא 0
?>מערכים רב־ממדיים שימושיים להפליא לארגון נתונים מובְנים, כמו לוחות משחק, טבלאות מידע או כל מצב שבו צריך לייצג נתונים בתבנית של רשת. הם מספקים דרך טבעית לעבוד עם שורות ועמודות של מידע קשור.
אתגר
קליתקבלו שלושה קלטים המייצגים את הממדים ואת הערך ההתחלתי של מערך דו־ממדי: מספר השורות, מספר העמודות וערך למילוי כל מיקום. קראו את הקלטים האלה, צרו מערך דו־ממדי בממדים שצוינו, שבו כל איבר מוגדר לערך הנתון, והדפיסו את המערך באמצעות print_r().
פורמט הקלט:
- שורה ראשונה: מספר השורות (מספר שלם)
- שורה שנייה: מספר העמודות (מספר שלם)
- שורה שלישית: הערך ההתחלתי לכל איבר (מחרוזת)
הפלט הצפוי: המערך הדו־ממדי שנוצר, מוצג באמצעות print_r()
נסו בעצמכם
<?php
// קראו את הקלט
$rows = intval(fgets(STDIN));
$columns = intval(fgets(STDIN));
$value = trim(fgets(STDIN));
// TODO: כתבו את הקוד שלכם למטה כדי ליצור את המערך הדו-ממדי
// הציגו את התוצאה
print_r($array);
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין