יצירת מערך דו־ממדי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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 אונליין