- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Array] array_diff()
-
[Array] array_diff()
Sintassi: array_diff ( array $array_input1, array *$array_input2 [,*array *$array_input3 ...] *)
array_diff confronta i valori di $array_input1 con quelli di $array_input2 restituendo un terzo array contentente tutti i valori del primo non presenti nel secondo, lasciando inalterate le chiavi. Eventualmente il confronto può essere esteso ad altri array.
[php]
$array_input1 = array("pippo", "pluto", "topolino");
$array_input2 = array("pippo", "pluto");
$array_output = array_diff($array_input1, $array_input2);print_r($array_output); //restituisce:
Array
(
[2] => topolino
)
[/php][php]
$array_input1 = array("pippo", "pluto");
$array_input2 = array("pippo", "pluto", "topolino");
$array_output = array_diff($array_input1, $array_input2);print_r($array_output); //restituisce:
Array
(
)
[/php]Il secondo esempio non restituisce nulla perché tutti gli elementi di $array_input1 sono presenti in $array_input2.
Interessante notare che se un elemento è presente più volte in $array_input1 e una sola volta in $array_input2
[php]
$array_input1 = array("pippo", "pluto", "pippo", "pippo", "pippo");
$array_input2 = array("pippo", "pluto");
$array_output = array_diff($array_input1, $array_input2);print_r($array_output); //restituisce:
Array
(
)
[/php]la funzione non restituisce nulla: infatti tutti i valori di $array_input1 sono presenti in $array_input2. Con le medesime considerazioni è possibile capire che anche l'ordine degli elementi di un array non comporta differenze:
[php]
$array_input1 = array("pippo", "pluto");
$array_input2 = array("pluto", "pippo");
$array_output = array_diff($array_input1, $array_input2);print_r($array_output); //restituisce:
Array
(
)
[/php]Può essere utile evidenziare con un esempio che le chiavi non entrano nel confronto e vengono restituite inalterate:
[php]
$array_input1 = array('a' => "pippo", 'b' => "pluto", 'c' => "topolino");
$array_input2 = array('d' => "pluto", 'e' => "pippo");
$array_output = array_diff($array_input1, $array_input2);print_r($array_output); //restituisce:
Array
(
=> topolino
)[/php]
Conviene infine mostrare per chiarezza un esempio in cui il confronto viene esteso ad altri array, restituendo solo i valori del primo array non contenuti negli array successivi:
[php]
$array_input1 = array("pippo", "pluto", "topolino", "paperino", "paperone");
$array_input2 = array("pippo", "pluto");
$array_input3 = array("topolino");
$array_input4 = array("paperino");
$array_output = array_diff($array_input1, $array_input2, $array_input3, $array_input4);print_r($array_output); //restituisce:
Array
(
[4] => paperone)
[/php]