• User Attivo

    [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]