מערך הוא מעין רשימה מסודרת של אלמנטים, כך שלכל אלמנט בו יש מפתח ייחודי משלו שאליו מותאם ערך כלשהו.
כדי ליצור מערך נשתמש בפונקציית הבנייה array(), שמקבלת זוגות של 'key'=>'value' המופרדים ע"י פסיקים. מפתח של אלמנט יכול להיות מספר שלם לא שלילי או מחרוזת, ואילו הערך יכול להיות כל דבר (גם מערך אחר - מערך בתוך מערך). כאשר לא מציינים את המפתח, אז PHP נותנת אוטומטית מפתח מספרי, והוא המפתח המספרי המקסימלי שניתן עד כה +1 (אם לא הוגדר מפתח מספרי עד כה, יינתן המפתח 0). אם מצויין מפתח שכבר ניתן לו ערך, אז הערך של אותו מפתח ישוכתב ויכיל את הערך החדש יותר.
כתבת שהמפתח 9 הינו מפתח מספרי,
ולעומתו 04 הוא מחרוזת , ואני למה מבין מדוע זה כך, אם שניהם מופיעים בתוך גרשיים... (בניגוד למספרים האחרים)
מפתחות במערכים
01-11-01 11:01 אלי חן (אדמין)
#3
המפתח '9' יהפוך למפתח מספרי 9.
המפתח '04' ישאר מחרוזת '04'.
זו לא טעות, ככה PHP עובד!
יש 2 סוגי מפתחות במערכים ב-PHP: מפתח מספרי (שלם), ומפתח בצורה של מחרוזת.
כאשר משתמשים במערך עם מפתח בצורה של מחרוזת שמגדיר מספר שלם תקני (למשל: '24'), אז PHP תהפוך את המפתח ממחרוזת למספר שלם. למה? כי ככה PHP עובדת, ככה מוגדרת השפה.
כאשר משתמשים במערך עם מפתח בצורה של מחרוזת שלא מגדירה מספר שלם תקני (למשל: '07'), אז המפתח ישאר בצורה של מחרוזת.
כאשר מגדירים מערך עם מפתח בצורה של מחרוזת שמגדירה מספר שלם, לדוגמא '9', אז PHP תהפוך אותו למפתח מספרי 9, אך עדיין ניתן יהיה לגשת אליו גם דרך המפתח '9' (מחרוזת), כי PHP תהפוך את המפתח אוטומטית למספר.
שאלה
05-12-02 03:01 ארז
#150
$arr=(array)$str;
אני לא ממש הבנתי למה זה לא הולך ככה:
$arr=array($str);
תודה
תשובה לשאלה
05-12-02 03:02 אלי חן (מנהל)
#152
השורה הראשונה היא המרה של משתנה (מסוג כלשהו) למשתנה מסוג מערך.
השורה השניה היא הגדרה של משתנה מסוג מערך.
אומנם התוצאה בשני המקרים תהיה זהה (במקרה הנתון בדף זה), אך אחד זה המרה והשני זה הגדרה.
אם תגדיר, למשל, את str$ להיות מערך כלשהו, אז שני המקרים יתנו לך תוצאות שונות. תוכל לבדוק זאת.
למה צריכים מערכים?
06-12-02 17:01 לב
#264
לא ממש הבנתי איך המערכים עובדים, ולמה צריך אותם?
תגובה: למה צריכים מערכים?
06-12-02 17:02 אלי חן (מנהל)
#267
מערך הוא סוג של משתנה מורכב, שבעצם מאגד בתוך משתנה אחד מספר ערכים/אלמנטים. בעיקר משמש עבור ייצוג של רשימת ערכים עם מכנה משותף. למשל: רשימת ירקות, רשימת מכוניות, רשימה של תוצאות חיפוש וכו' וכו'... קשה לקיים שפת תכנות טובה ללא מערכים - מערך הוא אבן בניין חשוב מאוד בכל שפת תכנות.
למה אתה לא משתמש...
08-12-02 03:00 יקיר סיטבון
#361
למה אתה לא מדפיס את הנתונים של המערך, ע"י הפונקציה: print_r???
אני חושב שהיא מדפיס את המערך בצורה יותר ברורה!
שאלה של הדיוט: מה זה סקלר? ניסיתי ולא מצאתי באתר שלך הסבר לזה
סקלר
31-10-02 23:02 אלי חן (מנהל)
#527
ב-PHP סוג ערך סקלרי, הכוונה היא ל:
- בוליאן (אמת או שקר)
- מספרים שלמים
- מספרים עשרוניים
- מחרוזות
כל הכבוד
02-11-02 05:00 חתול במגפיים
#602
שלום, אני מתכנת ותיק, מעולם לא נגעתי ב-PHP, אני יושב כבר עשר דקות מול האתר שלך וקורא, מעולם לא למדתי שפה מהר כ"כ וברור כ"כ, בכלל כל הכבוד על היוזמה, אני מאוד מקווה שאתה מרוויח מזה משהו.
לא הבנתי מילה!
01-12-03 03:02 [ללא שם]
#657
יש לי ידע ב C.
וסחתיין- עד עכשיו התרשמתי מהמדריך שלך לטובה.
אבל עכשיו שקראתי את המדריך על המערכים לא הבנתי מילה!
עברית במערכים
03-12-03 18:01 דורון
#768
המערך שלי קורא שדות בעברית. כאשר הוא מגיע לשדה שנגמר בסוגריים - הוא מעביר את הסוגר האחרון לתחילת השורה והופך אותו (אני משתמש בעיברית לוגית).
בקריאת שדה בעברית שיש בו את סימן הגרש (') אני מקבל הודעת שגיאה - גרש בערך השמור בין גרשיים. המלצות? רעיונות?
עברית במערכים
03-12-03 20:02 אלי חן (מנהל)
#773
הבעיה היא לא ב PHP אלא בהצגת הדף שלך..
כדי להציג עברית בצורה טובה, אתה צריך להחליף את הכיוון ל מימין-לשמאל:
<span dir=rtl>
או ב css:
direction:rtl;
בקשר לגרש..
03-12-03 20:02 אלי חן (מנהל)
#774
תשתמש בפונקציה addslashes
המרת מערך למחרוזת
04-12-03 01:01 לירון
#789
אני מנסה כבר כמה זמן, אך לא ממש מצליח.
מה שאני צריך זה להרכיב מחרוזת שהמקור שלה הוא במערך.
כלומר, מערך המכיל את הערכים 10 20 30 40
ואני רוצה להציב אותם במערך עם פסיקים ביניהם.
מה הזמן הריצה של מערכים בphp?
היתרון של המערכים הוא שהאינדקסים שלהם הם מספרים ולכן זמן הריצה הוא קבוע, אך במידה והאינדקסים יכולים להיות מחרוזות מה זמן הריצה במקרה הזה?
מערכים עם אינדקסים מספריים ואסוציאטיביים
09-12-03 18:02 אלי חן (מנהל)
#1134
המערכים הרגילים הם מערכים עם אינדקסים מספריים. PHP תומכת גם במערכים אסוציאטיביים עם אינדקסים של מחרוזות.
מערך מספרי הוא מהיר יותר ממערך אסוציאטיבי.. אבל ההבדל הוא מאוד מאוד זניח (ממש אפסי). אפשר אפילו להגיד שזמן הגישה הוא זהה! (אם תעברי על פני חצי מיליון אלמנטים בלולאה, אולי רק אז תרגישי בהבדלים מזעריים).
יותר חשוב הוא זמן חיפוש במערך.. כאן רואים יתרון עצום למערכים אסוציאטיביים, שכן חיפוש על המפתחות של המערך (array_key_exists) הרבה יותר מהיר מחיפוש על הערכים של המערך (in_array)..
אין לי ידע קודם בשפות תכנות
09-12-04 14:01 נתנאל חדד
#1825
אין לי ידע קודם בשפות תכנות ועד עכשיו ממש התרשמתי מהמדריך שלך
באמת אחלה מדריך אבל במערכים לא הבנתי כלום
ממש כלום אין לי מושג מה הולך פה
אתה יכול להסביא לי קצת יותר בפירוט???
לא מובן קטע זה
03-12-08 10:01 אביב אסבן
#2803
לא ממש הבנתי עדיין מהו המערך ומה הוא עושה
לבחור ששאל על ההבדל בין '9' ל-'04'
01-11-09 10:02 חזי הלפרט
#2870
יתכן ו-PHP מזהה את '9' כתוו (character) ולכן ההמרה למספר היא מיידית לעומת זאת '04' מזוהה כמחרוזת (string) ולכן לא מתבצעת המרה מיידית. מעניין לשמוע האם זהו באמת כך.