(PHP 4 >= 4.0.1, PHP 5, PHP 7)
array_diff — Calculează diferența dintre tablouri
$array1
, array $array2
, array $...
= ?
) : array
Compară array1
cu unul sau mai multe tablouri și
întoarce valorile din array1
care nu sunt prezente în
celelalte tablouri.
array1
Tabloul de referință
array2
Tabloul care se compară
...
Mai multe tablouri pentru a se compara
Întoarce un array ce conține toate înregistrările din
array1
care nu sunt prezente nici în unul din celelalte
tablouri. Cheile din tabloul array1
sunt păstrate.
Example #1 Exemplu array_diff()
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>
Aparițiile multiple în $array1 sunt toate tratate în același mod. Aceasta va afișa :
Array ( [1] => blue )
Example #2 Exemplu array_diff() cu tipuri ce nu se potrivesc
Două elemente sunt considerate egale dacă și numai dacă
(string) $elem1 === (string) $elem2
. Adică atunci când
reprezentarea sub formă de
șir de caractere este aceeași.
<?php
// Aceasta va genera o notificare că un tablou nu poate fi preschimbat în șir de caractere.
$source = [1, 2, 3, 4];
$filter = [3, 4, [5], 6];
$result = array_diff($source, $filter);
// Iar aceasta este fine, deoarece obiectele pot fi preschimbate în șiruri de caractere.
class S {
private $v;
public function __construct(string $v) {
$this->v = $v;
}
public function __toString() {
return $this->v;
}
}
$source = [new S('a'), new S('b'), new S('c')];
$filter = [new S('b'), new S('c'), new S('d')];
$result = array_diff($source, $filter);
// $result acum conține o instanță a S('a');
?>
Pentru a utiliza o funcție de comparație alternativă vedeți array_udiff().
Notă:
Această funcție verifică numai o dimensiune a unui tablou n-dimensional. Desigur că puteți să verificați dimensiunile mai adânci utilizând
array_diff($array1[0], $array2[0]);
.