Ce face array_intersect_assoc
array_intersect se uită doar la valori, iar array_intersect_key doar la chei. array_intersect_assoc păstrează un element doar dacă perechea cheie-valoare apare identic în fiecare tablou.
Valorile sunt comparate ca text, deci 1 și "1" sunt considerate egale.
Parametri
| Parametru | Descriere |
|---|---|
$array |
Tabloul de pornire. |
$arrays |
Tablourile cu care se compară. |
Ce returnează
Un tablou cu elementele comune, cu cheile din primul tablou.
Exemple
Exemplul 1: Setările rămase neschimbate
<?php
$inainte = ["tema" => "light", "limba" => "ro", "pe_pagina" => 10];
$dupa = ["tema" => "dark", "limba" => "ro", "pe_pagina" => "10"];
print_r(array_intersect_assoc($inainte, $dupa));
Rezultat
Array
(
[limba] => ro
[pe_pagina] => 10
)
Exemplul 2: Aceeași valoare, altă cheie
<?php
$a = ["x" => "verde", "y" => "roșu"];
$b = ["x" => "verde", "z" => "roșu"];
print_r(array_intersect($a, $b));
print_r(array_intersect_assoc($a, $b));
Rezultat
Array
(
[x] => verde
[y] => roșu
)
Array
(
[x] => verde
)
Greșeli frecvente
- Te aștepți ca
10și"10"să fie diferite. Comparația se face ca text. Pentru comparare strictă foloseștearray_uintersect_assoccu o funcție proprie.
Comenzi înrudite
array_intersect / array_intersect_key: Returnează elementele din primul tablou care apar și în toate celelalte tablouri.array_diff / array_diff_key / array_diff_assoc: Returnează elementele din primul tablou care nu apar în celelalte tablouri.array_udiff / array_uintersect și variantele lor: Diferența și intersecția tablourilor, cu o funcție proprie care compară valorile.