implode($separator, $array) מחברת את ערכי המערך למחרוזת אחת, עם $separator בין כל זוג: implode(', ', ['red', 'green', 'blue']) מחזירה "red, green, blue".
המפריד נכנס רק בין איברים, אף פעם לא לפני הראשון או אחרי האחרון. זה ההפך של explode(), שמפצלת מחרוזת למערך.
תחביר
implode(string $separator, array $array): string
implode(array $array): string // separator defaults to ""
המפריד בא ראשון. קוד ישן העביר לפעמים את המערך ראשון, implode($array, ', '). הסדר הזה הוצא משימוש ב-PHP 7.4 והוסר ב-PHP 8.0, שבה הוא זורק TypeError: implode(): Argument #2 ($array) must be of type ?array, string given.
implode מול join
join() היא כינוי של implode(). הן מקבלות אותם ארגומנטים ומחזירות אותה מחרוזת, אז בחרו אחת והישארו עקביים.
מה קורה למספרים, לבוליאנים ול-null
כל ערך מומר קודם למחרוזת. מספרים מודפסים כמצופה, true הופך ל-"1", ו-false ו-null הופכים למחרוזות ריקות, וזה משאיר שני מפרידים ברצף.
implode למערך אסוציאטיבי
implode() מתעלמת ממפתחות ומחברת רק את הערכים. כדי לקבל זוגות key=value, בנו כל חלק עם array_map() על המפתחות והערכים, ואז חברו. http_build_query() עושה את אותו הדבר למחרוזת שאילתה של URL וגם מקודדת רווחים ותווים מיוחדים.
אותו דפוס מחבר רק את המפתחות: implode(', ', array_keys($user)). עוד על מפתחות וערכים בעמוד מערכים אסוציאטיביים.
חיבור עם ירידת שורה או בניית רשימת HTML
המפריד יכול להיות כל מחרוזת. "\n" (במירכאות כפולות) שם כל ערך בשורה משלו, וזה שימושי לקבצי טקסט ולפלט בשורת הפקודה. עם תגיות HTML כמפריד, implode() בונה רשימה בשורה אחת. הריצו את הבלוק הבא והלשונית Page תציג את הרשימה.
הפעלת htmlspecialchars() על כל ערך לפני החיבור מונעת מערך כמו <b> להפוך ל-markup.
חיבור עם "and" לפני הפריט האחרון
רשימה קריאה לבני אדם צריכה בדרך כלל "and" לפני האיבר האחרון. הוציאו אותו, חברו את השאר, ואז הוסיפו אותו בחזרה:
טעות נפוצה: מערכים מקוננים
implode() עובדת על רמה אחת. איבר שהוא בעצמו מערך מומר למילה Array, ו-PHP מדפיסה אזהרה:
<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array
שטחו קודם את המערכים הפנימיים, או חברו כל אחד בנפרד:
שאלות נפוצות
מה implode() עושה ב-PHP?
היא מחברת את ערכי המערך למחרוזת אחת ושמה את המפריד ביניהם: implode(', ', ['a', 'b', 'c']) מחזירה "a, b, c". היא ההפך של explode().
מה ההבדל בין implode() ל-join()?
אין הבדל. join() היא כינוי של implode(): אותם ארגומנטים, אותה תוצאה. implode() הוא השם שתראו ברוב הקוד.
איך עושים implode למערך אסוציאטיבי עם המפתחות שלו?
implode() משתמשת רק בערכים. כדי לכלול מפתחות, בנו קודם את החלקים: implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). למחרוזת שאילתה של URL, http_build_query($a) עושה את זה בקריאה אחת.
למה implode() נותנת TypeError ב-PHP 8?
כי הארגומנטים בסדר הישן. implode($array, ', ') הוצא משימוש ב-PHP 7.4 והוסר ב-PHP 8.0. כתבו את המפריד ראשון: implode(', ', $array).
איך ממירים מערך למחרוזת מופרדת בפסיקים ב-PHP?
implode(',', $array). השתמשו ב-', ' כמפריד אם אתם רוצים רווח אחרי כל פסיק. לקובץ CSV, השתמשו ב-fputcsv(), שגם עוטפת במירכאות ערכים שמכילים פסיקים.