מדריך PHP

מדריך PHP: מערכים

‏ • Internet Israel

עד כה למדנו על משתנים חביבים שיכולים לכלול מספרים (1,2,3,4..( או מחרוזת טקסט ('one', 'two', 'three', 'four'…). נניח שאני צריך בסקריפט שלי משתנים שיכילו מספרים שונים:

<?php
$my_var1
 = 2;
$my_var2 = 4;
$my_var3 = 8;
$my_var4 = 16;
$my_var5 = 32;
$my_var6 = 64;
$my_var7 = 128;

ברור לכם שמדובר במשהו שיכול להטריף כל מתכנת. להתעסק עם שבעה משתנים שונים זה די מרגיז, שלא לדבר על יותר. ולפעמים אנחנו צריכים יותר, הרבה יותר. מה עושים? במקום ליצור שבעה משתנים שונים, אנו ניצור מערך. מערך או array באנגלית, הוא משתנה מסוג מיוחד שמכיל כמה נתונים. בואו ונסתכל על המספרים החביבים שהכנסתי לשבעה משתנים ונכניס אותם לתוך מערך.

<?php
$my_arr
 = array(2,4,8,16,32,64,128);

אפשר לראות שסידרתי את כל המספרים יפה והפרדתי ביניהם יפה עם פסיקים. איך אני מדפיס למשל את אחד הערכים? בדיוק ככה:

<?php
$my_arr
 = array(2,4,8,16,32,64,128);
print $my_arr[1];

מה התוצאה תהיה לפי דעתכם? התוצאה תהיה 4 (ולא 2) כיון שאנחנו מתחילים את הספירה מ-0 ולא מ-1. המספר שנמצא במקום 1 הוא 4.

אפשר לערבב סוגי נתונים במערך, כך למשל:

<?php
$my_arr
 = array(2,'four',8,'sixteen',32,64,
'one hundren and twenty eight');
print $my_arr[1];

התוצאה תהיה כמובן 'four'.

מה שיש בתוך הסוגריים המרובעות (המספר הסידורי) נקרא 'מפתח' או key כיוון שהוא המפתח שפותח לי את השער אל הערך – 'value'. כך שבמערך הזה יש לנו כמה key שמאחוריהם נמצאים כמה value.

<?php
$my_arr
 = array(2,'four',8,'sixteen',32,64,
'one hundren and twenty eight');
$key = 4;
$value = $my_arr[$key]
print $value;

כך יוצרים בעצם משתנה אחד שיכול להכיל אינספור נתונים. מאפס ועד אינסוף. לכל אחד מהם מפתח משלו. רק צריך לזכור שהאיבר הראשון הוא תמיד אפס.

מערך אסוציאטיבי

המערך שלמדנו עליו עד עכשיו הוא מערך נומרי, כלומר – המפתח (key) הוא תמיד מספר. אבל ב-PHP אנו יכולים לייצר גם מערך שהמפתח שלו הוא מחרוזת טקסט.

<?php
$my_arr
 = array('my_phone' => 123456,
  'my_sons_number' => 3,
  'my_city' => 'Petah Tiqwa',
  );

כאן אנחנו יכולים לראות שהמבנה מורכב הרבה יותר מהמערך שלמדנו עליו זה עתה. במקום סתם להכניס ערכים לתוך סוגריים ולדאוג שיהיו פסיקים ביניהם, אני נדרש לפרט גם את המפתח ולעשות חץ שמצביע על הערך שלהם.

על מנת לחלץ את הערך, אני משתמש במפתח באופן הבא:

<?php
$my_arr
 = array('my_phone' => 123456,
  'my_sons_number' => 3,
  'my_city' => 'Petah Tiqwa',
  );
print $my_arr['my_phone'];

ומה שיודפס לי הוא כמובן 123456.

אני יכול להשתמש במפתחות של מחרוזת טקסט וגם במספרים, למשל:

<?php
$my_arr
 = array('my_phone' => 123456,
  'my_sons_number' => 3,
  'my_city' => 'Petah Tiqwa',
  'my_car' => 'Hyundai',
  2 => 'two', 
  );
print $my_arr[2];

ומה שיודפס לי הוא כמובן הטקסט two. בניגוד למערך נומרי, לסדר אין חשיבות כאן.

הוספת איברים למערך

בשני סוגי המאמרים, אנחנו יכולים להוסיף למערך איברים מתי שמתחשק לנו. למשל, בואו ונניח מערך נומרי:

$my_arr = array(2,4,8,16,32,64,128);

אם אני רוצה להוסיף איבר נוסף למערך, אני יכול לעשות את זה בקלות. אני פשוט אפנה למערך שלי עם סוגריים מרובעים ללא key, והכוונה היא – להוסיף את האיבר בסוף המערך.

<?php
$my_arr
 = array(2,4,8,16,32,64,128);
$my_arr[] = 256;

איך אני מדפיס את תוכן המערך הזה? באמצעות פקודת print_r:

<?php
$my_arr
 = array(2,4,8,16,32,64,128);
$my_arr[] = 256;
print_r($my_arr);

פקודת print_r זהה לחלוטין לפקודת print, רק שהיא מכילה סוגריים ובתוכה אנו מכניסים את המערך שלנו (לא משנה אם זה מערך נומרי או אסוציאטיבי), היא מדפיסה את כל המערך,כאשר בתוך הסוגריים המרובעים יופיע המפתח, וחץ אל הערך.

PHP מערכים

אני יכול להוסיף באותה שיטה איבר גם למערך אסוציאטיבי. הספירה פשוט תתחיל מ-0 או מהמספר האחרון במידה ומדובר במערך מעורב. דוגמא תמיד טובה במקרה הזה:

<?php
$my_arr
 = array('my_phone' => 123456,
  'my_sons_number' => 3,
  'my_city' => 'Petah Tiqwa',
  'my_car' => 'Hyundai',
  2 => 'two', 
  );
$my_arr[] = 256;
print_r($my_arr);

ונקבל:

PHP מערך

מה שקרה הוא הוספת מפתח 3 עם ערך 256. למה 3? כי יש לנו מפתח 2 במערך.

ואם הייתי רוצה להוסיף ערך דווקא למפתח 0 (המפתח הראשון) ? זה דווקא פשוט:

<?php
$my_arr
 = array('my_phone' => 123456,
  'my_sons_number' => 3,
  'my_city' => 'Petah Tiqwa',
  'my_car' => 'Hyundai',
  2 => 'two', 
  );
$my_arr[0] = 256;
print_r($my_arr);

במקום סתם סוגריים מרובעות, אנו מציינים את מספר הערך שאני רוצה להוסיף. זה עובד יפה גם במערך נומרי:

<?php
$my_arr
 = array(2,4,8,16,32,64,128);
$my_arr[0] = 256;
print_r($my_arr);

כמובן שזה דורס למוות את האיבר שנמצא כבר במפתח 0, אז צריך לוודא היטב שאין שם שום דבר, אלא אם כן לא ממש אכפת לכם שהוא יידרס. איך מוודאים? אפשר להשתמש במשפט if שלמדנו במאמר הקודם!

<?php
$my_arr
 = array(2,4,8,16,32,64,128);
if(!$my_arr[0]) {
  $my_arr[0] = 256;
}
else {
  $my_arr[] = 256;
}
print_r($my_arr);

הקוד הזה שואל האם לא קיים איבר במפתח 0 במערך (שימו לב לסימן הקריאה! הוא מסמן שלילה). במידה ואין, הוא מכניס את הערך 256 למפתח אפס. במידה ויש, הוא יוסיף את ערך 256 למפתח הבא שפנוי.

תגיות: , ,

רן בר-זיק

מתכנת PHP מנוסה ובעל ידע רב בפיתוח לאינטרנט על בסיס LAMP. מומחה במערכות דרופל, ג'ומלה ו-וורדפרס. שולט היטב בכל מה שקשור לפרונט אנד: JavaScript: jQuery ו-MooTools,ActionScript 2/3 וכמובן HTML 5 + CSS 3.אינטרנט ישראל: www.internet-israel.com

תגובות בפייסבוק