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_diffsă 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_valuesdacă ai nevoie de chei consecutive.
Comenzi înrudite
array_intersect / array_intersect_key: Returnează elementele din primul tablou care apar și în toate celelalte tablouri.array_filter: Păstrează doar elementele dintr-un tablou care îndeplinesc o condiție.in_array: Verifică dacă o valoare se află într-un tablou.