W3docs

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 ""
ParametroDescrizione
$separatorLa stringa inserita tra ogni elemento. Spesso chiamata glue.
$arrayL'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

php— editable, runs on the server

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:

php— editable, runs on the server

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 | admin

Se 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.

Pratica

Pratica
Qual è lo scopo della funzione implode() in PHP?
Qual è lo scopo della funzione implode() in PHP?
Was this page helpful?