implode()
Articolo sulla funzione PHP implode(), usata per unire gli elementi di un array in una stringa con un separatore. Utile per lavorare con array e stringhe.
La funzione implode() di PHP unisce gli elementi di un array in una singola stringa, inserendo un separatore (il glue) tra ogni elemento. È la funzione a cui si ricorre quando si ha una lista di valori e si ha bisogno di una sola stringa — un elenco separato da virgole, un percorso URL, una riga CSV o una clausola SQL IN (...). È l'inverso esatto di explode(), che divide una stringa di ritorno in un array.
Questa pagina tratta la sintassi, il valore di ritorno e i casi che creano confusione: il glue facoltativo, gli array associativi, gli array vuoti e la conversione dei valori non stringa.
Sintassi
implode(string $separator, array $array): string
implode(array $array): string // legacy: separator defaults to ""| Parametro | Descrizione |
|---|---|
$separator | La stringa inserita tra ogni elemento. Spesso chiamata glue. |
$array | L'array di valori da unire. |
Valore di ritorno: una singola stringa contenente tutti gli elementi dell'array uniti da $separator, nel loro ordine originale.
La funzione non modifica mai l'array originale — restituisce una nuova stringa.
Un esempio di base
Ogni elemento viene unito con uno spazio singolo, producendo:
Hello World !Utilizzare un separatore diverso
Il glue può essere qualsiasi stringa, non solo un singolo carattere. Qui uniamo con un trattino:
Output:
Hello-World-!Un utilizzo comune nella pratica è la creazione di un elenco separato da virgole per la visualizzazione o per una query:
<?php
$ids = [4, 7, 12, 19];
echo 'WHERE id IN (' . implode(', ', $ids) . ')';
// WHERE id IN (4, 7, 12, 19)
?>Unire un array associativo
implode() ignora completamente le chiavi e unisce solo i valori, nell'ordine di inserimento:
<?php
$user = ['id' => 1, 'name' => 'Sam', 'role' => 'admin'];
echo implode(' | ', $user);
?>Output:
1 | Sam | adminSe hai bisogno anche delle chiavi (ad esempio id=1&name=Sam), usa http_build_query() o array_map() sulle chiavi — implode() da solo non può vederle.
Casi limite e insidie
Array vuoto. Unire un array vuoto restituisce sempre una stringa vuota, indipendentemente dal separatore:
<?php
echo '[' . implode(', ', []) . ']'; // []
?>I valori non stringa vengono convertiti in stringhe. Numeri, booleani e null vengono convertiti usando le normali regole di PHP per le stringhe — il che può sorprendere: true diventa "1", mentre false e null diventano "" (una stringa vuota):
<?php
echo implode(', ', [1, 2.5, true, null, 'x']);
// 1, 2.5, 1, , x
?>Se vuoi filtrare i valori null/false, passa prima l'array attraverso array_filter() prima di unirlo.
Il separatore è facoltativo. Chiamando implode($array) senza glue si concatenano i valori direttamente. Si raccomanda di passare il separatore per prima per chiarezza:
<?php
echo implode(['a', 'b', 'c']); // abc
?>Prima di PHP 8.0 i due argomenti potevano essere passati in qualsiasi ordine (
implode($array, $glue)). Quel comportamento storico è stato rimosso in PHP 8.0 — passa sempre il separatore per primo.
implode() vs explode()
implode() e explode() sono operazioni speculari: una costruisce una stringa da un array, l'altra ricostruisce l'array dalla stringa.
<?php
$csv = implode(',', ['red', 'green', 'blue']); // "red,green,blue"
$back = explode(',', $csv); // ['red', 'green', 'blue']
?>join() è semplicemente un alias di implode() — i due sono intercambiabili. Vedi join() e explode() per ulteriori informazioni.