back to top

Come faccio ad aggiungere un elemento ad una array in PHP?

Aggiungere un elemento ad una array con PHP è cosa piuttosto semplice. Vediamo un esempio: per prima cosa creiamo una array:

$miaarray = array('pippo','pluto');

ora supponiamo di voler aggiungere un nuovo elemento; per farlo sarà sufficiente scrivere:

$miaarray[] = 'topolino';

oppure, in alternativa, è possibile utilizzare la funzione array_push in questo modo:

array_push($miaarray, 'topolino');

se volete aggiungere più di un elemento:

array_push($miaarray, 'topolino', 'paperino', 'minnie');

Per verificare l’effetto del nostro intervento:

print_r($miaarray);

che produrrrà il seguente output:

Array
(
    [0] => pippo
    [1] => pluto
    [2] => topolino
    [3] => paperino
    [4] => minnie
)

Come avrete notato di default il parser PHP associa, ad ogni valore dell’array, una chiave (o "numero indice") che va da 0 ad N.

Aggiungendo un nuovo elemento questo viene posizionato automaticamente in coda all’array e gli viene assegnato un indice in modo automatico (in modo incrementale rispetto agli indici già presenti).

Ma come procedere se volessimo associare una chiave specifica al nuovo valore?

Aggiungere un elemento specificando la chiave

Partiamo da quest’ultima array di 5 elementi e supponiamo di volerne inserire un sesto con chiave esplicita 3:

$miaarray[3] = 'zio paperone';

Stampando a video il contenuto dell’array otterremo questo risultato:

Array
(
    [0] => pippo
    [1] => pluto
    [2] => topolino
    [3] => zio paperone
    [4] => minnie
)

Quindi il nuovo valore è stato associato correttamente alla chiave desiderata, ma per far questo è andato perso il valore precedentemente abbinato alla stessa chiave ("paperino").

Aggiungere un elemento specificando la chiave senza sovrascrivere nulla?

Come aggiungere un valore ad un array specificando la chiave e, nel contempo, riposizionando gli altri elementi che lo compongono? Una soluzione potrebbe trovarsi nel seguente script:

function inserimento_con_posizione($array, $posizione, $valore)
{
  $nuovo_array = array_merge(array_slice($array, 0 , $posizione), array($valore), array_slice($array, $posizione));
  return $nuovo_array;
}

La nostra funzione personalizzata dovrà essere usata in questo modo:

$miaarray = inserimento_con_posizione($miaarray, 3, 'zio paperone');

consentirà di ottenere un risultato come il seguente:

Array
(
    [0] => pippo
    [1] => pluto
    [2] => topolino
    [3] => zio paperone
    [4] => paperino
    [5] => minnie
)

Sostanzialmente array_slice() "taglierà" l’array all’altezza della posizione desiderata, quest’ultimo verrà poi ricomposto tramite array_merge().. Ne consegue che gli elementi dell’array scivoleranno di una posizione per lasciar spazio a quello nuovo (e nulla verrà rimosso).

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Cannot modify header information – headers already sent: come risolvere l’errore PHP

L'errore di PHP cannot modify header information - headers...

Ricavare l’estensione di un file con PHP

Quando si lavora con i file in un'applicazione web,...

GD Library: creazione, manipolazione e ridimensionamento immagini con PHP

Le librerie GD (o GD Library), sono componenti fondamentali...

PHP: impostare il fuso orario italiano

Le tue pagine PHP non mostrano l’orario corretto? Probabilmente...

5 script PHP per gestire BBCode

A volte può aversi l'esigenza di dover offrire agli...
Pubblicitร