array_diff / array_diff_key / array_diff_assoc în PHP

Tablouri (array) PHP 4.0.1+ (array_diff_key: PHP 5.1+)

Returnează elementele din primul tablou care nu apar în celelalte tablouri.

Sintaxă
array_diff(array $array, array ...$arrays): array

Ce face array_diff / array_diff_key / array_diff_assoc

array_diff compară valorile: păstrează din primul tablou doar valorile care nu există în niciunul dintre celelalte. Cheile rezultatului sunt cele din primul tablou.

array_diff_key compară doar cheile, iar array_diff_assoc compară și cheia, și valoarea. Valorile sunt comparate ca text, deci 1 și "1" sunt considerate egale.

Parametri

Parametru Descriere
$array Tabloul de pornire.
$arrays Unul sau mai multe tablouri cu care se compară.

Ce returnează

Un tablou cu elementele din $array care lipsesc din celelalte.

Exemple

Exemplul 1: Ce produse lipsesc din stoc

<?php
$comandate = ["mouse", "tastatură", "monitor"];
$inStoc = ["mouse", "monitor"];

print_r(array_diff($comandate, $inStoc));

Rezultat

Array
(
    [1] => tastatură
)

Exemplul 2: Eliminarea unor chei cu array_diff_key

Un truc des folosit: scoți câmpurile sensibile dintr-un tablou înainte să îl afișezi.

<?php
$utilizator = ["nume" => "Ana", "email" => "ana@exemplu.ro", "parola" => "secret"];

$public = array_diff_key($utilizator, ["parola" => true]);
print_r($public);

Rezultat

Array
(
    [nume] => Ana
    [email] => ana@exemplu.ro
)

Exemplul 3: Ce setări s-au schimbat, cu array_diff_assoc

<?php
$inainte = ["tema" => "light", "limba" => "ro", "fus" => "Europe/Bucharest"];
$dupa = ["tema" => "dark", "limba" => "ro", "fus" => "Europe/Bucharest"];

print_r(array_diff_assoc($dupa, $inainte));

Rezultat

Array
(
    [tema] => dark
)

Greșeli frecvente

  • Te aștepți ca array_diff să arate diferențele în ambele sensuri. Returnează doar ce este în primul tablou și lipsește din celelalte.
  • Folosești rezultatul cu chei 0, 1, 2. Cheile originale se păstrează: adaugă array_values dacă ai nevoie de chei consecutive.

Comenzi înrudite