W3docs

La funzione array_diff di PHP

La funzione array_diff in PHP confronta gli array e restituisce i valori presenti nel primo array ma non negli altri.

La funzione array_diff in PHP è una funzione integrata che confronta gli array e restituisce i valori presenti nel primo array ma non in nessuno degli altri. È utile ogni volta che occorre la differenza insiemistica tra liste — ad esempio, per confrontare dati provenienti da un database con valori inviati tramite un modulo, o per individuare gli elementi rimossi tra due istantanee di una lista.

Questo capitolo illustra come funziona array_diff, la sua sintassi, come gestisce chiavi e confronto dei valori, e le insidie più comuni. Fa parte dell'argomento array PHP.

Come funziona array_diff

La funzione array_diff confronta due o più array e restituisce un nuovo array contenente i valori presenti nel primo array ma in nessuno degli array successivi. Due punti sono fondamentali da comprendere:

  • Il confronto è basato sui valori; le chiavi vengono ignorate. Solo i valori vengono confrontati, ma le chiavi del primo array sono conservate nel risultato (non vengono reindicizzate).
  • I valori vengono confrontati come string. Internamente PHP tratta due elementi come uguali quando (string) $a === (string) $b. Quindi l'intero 1 e la string "1" sono considerati lo stesso valore.

Sintassi

La sintassi della funzione array_diff è la seguente:

Sintassi della funzione array_diff di PHP

array array_diff (array $array1, array $array2 [, array $... ]);

Il parametro array1 è il primo array — quello i cui valori si desidera mantenere. Il parametro array2 (e gli eventuali array aggiuntivi) sono gli array con cui confrontare. La funzione restituisce i valori di array1 che non si trovano in nessuno degli altri array.

Esempi

Vediamo alcuni esempi di come utilizzare la funzione array_diff nel codice PHP.

Esempio PHP dell'uso della funzione array_diff

php— editable, runs on the server

Questo codice produrrà il seguente output:

Array ( [0] => 1 )

Come si può vedere, la funzione array_diff ha restituito il valore 1, che è presente in $array1 ma non in $array2. Si noti che la chiave originale (0) del primo array viene conservata.

Esempio PHP con valori string (distinzione tra maiuscole e minuscole)

php— editable, runs on the server

Questo codice produrrà il seguente output:

Array ( [1] => Banana )

In questo esempio, il confronto tra string è sensibile alle maiuscole. Poiché 'Banana' non corrisponde esattamente a 'banana', viene restituito come differenza. La chiave 1 (la posizione originale di Banana) viene mantenuta nel risultato.

Confronto con più array

È possibile passare più di due array. Un valore viene mantenuto solo se è assente da tutti gli altri array:

<?php

$array1 = [1, 2, 3, 4, 5];
$array2 = [2, 4];
$array3 = [5];

$result = array_diff($array1, $array2, $array3);
print_r($result);

?>

Output:

Array ( [0] => 1 [2] => 3 )

I valori 2 e 4 vengono rimossi da $array2, e 5 viene rimosso da $array3, lasciando 1 e 3 con le loro chiavi originali.

Reindicizzazione del risultato

Poiché le chiavi originali vengono conservate, il risultato può presentare lacune nelle chiavi numeriche. Se si ha bisogno di un elenco indicizzato in modo sequenziale, è sufficiente racchiudere la chiamata in array_values():

<?php

$result = array_values(array_diff([1, 2, 3], [2]));
print_r($result);

?>

Output:

Array ( [0] => 1 [1] => 3 )

Attenzione: confronto lasco basato su string

Poiché gli elementi vengono confrontati come string, i tipi misti possono corrispondere in modo inatteso:

<?php

$result = array_diff(['1', '2', 3], [1, 2]);
print_r($result);

?>

Output:

Array ( [2] => 3 )

Qui '1' corrisponde a 1 e '2' corrisponde a 2 (confronto tra string), quindi rimane solo 3. Gli object e gli array come valori generano un avviso, poiché non possono essere convertiti in string in modo pulito.

Funzioni correlate

array_diff confronta solo i valori. PHP offre varianti per esigenze diverse:

Conclusione

La funzione array_diff è uno strumento utile per confrontare gli array e trovare le differenze tra di essi. Che si lavori con dati provenienti da un database o semplicemente con elenchi di valori, la funzione array_diff consente di trovare rapidamente e facilmente i valori univoci di un array. Utilizzando questa funzione nel codice PHP, è possibile semplificare il processo di sviluppo e rendere più agevole il reperimento e l'elaborazione dei dati necessari.

Esercizio

Pratica
Cosa fa la funzione array_diff() in PHP?
Cosa fa la funzione array_diff() in PHP?
Was this page helpful?