Menu

array_slice() ב-PHP: קבלת חלק ממערך

array_slice($array, $offset, $length) מחזירה עותק של חלק ממערך בלי לשנות את המקור. למדו היסטים שליליים לפריטים האחרונים, preserve_keys, חלוקה לדפים של רשימה, ובמה היא שונה מ-array_splice.

בדף הזה יש עורכים שאפשר להריץ - לערוך, להריץ ולראות את הפלט מיד.

array_slice($array, $offset, $length) מחזירה מערך חדש עם $length איברים החל ממיקום $offset. המערך המקורי לא משתנה. השמיטו את $length כדי לקחת הכול עד הסוף.

ההיסט הוא מיקום (0 הוא האיבר הראשון), לא מפתח. זה חשוב במערכים אסוציאטיביים ובמערכים שהמפתחות שלהם אינם 0, 1, 2.

קבלת N האיברים האחרונים עם היסט שלילי

היסט שלילי נספר מהסוף: -1 הוא האיבר האחרון, -3 מתחיל שלושה מהסוף. אורך שלילי עוצר כמה איברים כאלה לפני הסוף.

בקשה של יותר איברים ממה שקיים זה בסדר: array_slice($log, 0, 100) מחזירה את כל החמישה.

שמירה על המפתחות המקוריים עם preserve_keys

מפתחות שלמים ממוספרים מחדש מ-0 אלא אם מעבירים true כארגומנט הרביעי. מפתחות מחרוזת תמיד נשמרים.

השתמשו ב-true כשהמפתחות אומרים משהו, כמו מזהים ממסד נתונים, ותחפשו איברים לפיהם בהמשך.

חלוקת מערך לדפים עם array_slice

הצגה של הדף $page ברשימה עם $perPage פריטים לדף היא חיתוך אחד: ההיסט הוא ($page - 1) * $perPage. הדוגמה הזו מדפיסה רשימת HTML עם קישורים לדפים. הריצו אותה ולחצו על מספר דף: אותו סקריפט ירוץ שוב כש-$_GET['page'] מוגדר מהקישור.

השורה max(1, min($pages, ...)) שומרת על ?page=99 או ?page=-1 שהוקלדו ידנית בתוך הטווח התקין. עם מסד נתונים הייתם מבקשים רק דף אחד עם LIMIT ו-OFFSET במקום לטעון כל שורה, אבל ברשימה שכבר נמצאת בזיכרון, array_slice היא כל העבודה.

array_slice מול array_splice

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

array_slicearray_splice
משנה את המקורלאכן (לפי הפניה)
מחזירהאת החלק שנבחראת החלק שהוסר
יכולה להכניס איבריםלאכן, ארגומנט רביעי
מפתחות שלמיםממוספרים מחדש אלא אם preserve_keysממוספרים מחדש

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

פיצול מערך לנתחים

כשאתם צריכים את כל הדפים בבת אחת, למשל כדי לסדר מוצרים בשורות של שלושה, array_chunk עושה את החיתוך החוזר בשבילכם.

שנו את ה-3 ל-2 או ל-4 והריצו שוב. הנתח האחרון מחזיק את מה שנשאר.

שאלות נפוצות

איך מקבלים את N האיברים הראשונים של מערך ב-PHP?

array_slice($arr, 0, 3) מחזירה את שלושת האיברים הראשונים. אם במערך יש פחות משלושה, מקבלים את כולם ובלי שגיאה.

איך מקבלים את N האיברים האחרונים של מערך?

השתמשו בהיסט שלילי: array_slice($arr, -3) מחזירה את שלושת האיברים האחרונים. השמטת האורך פירושה "עד הסוף".

מה עושה preserve_keys ב-array_slice?

כברירת מחדל array_slice ממספרת מחדש מפתחות שלמים מ-0. העבירו true כארגומנט הרביעי, array_slice($arr, 2, 3, true), כדי לשמור על המפתחות השלמים המקוריים. מפתחות מחרוזת תמיד נשמרים, עם הארגומנט או בלעדיו.

מה ההבדל בין array_slice ל-array_splice?

array_slice מחזירה עותק של חלק מהמערך ומשאירה את המקור כמו שהוא. array_splice מקבלת את המערך לפי הפניה, מסירה ממנו את החלק הזה (ויכולה להכניס במקומו איברים חלופיים) ומחזירה את מה שהסירה.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל