array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'function.array-diff.php', 1 => 'array_diff', ), 'up' => array ( 0 => 'ref.array.php', 1 => 'Dizi İşlevleri', ), 'prev' => array ( 0 => 'function.array-diff-ukey.php', 1 => 'array_diff_ukey', ), 'next' => array ( 0 => 'function.array-fill-keys.php', 1 => 'array_fill_keys', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'reference/array/functions/array-diff.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
array_diff — Dizilerin farkını hesaplar
dizi
ile bir veya daha fazla diziyi
karşılaştırır ve diğer dizilerde bulunmayan değerleri
dizi
içinde döndürür.
dizi
Karşılaştırılacak dizi.
diziler
Karşılaştırılacak diğer diziler.
Diğer dizilerde mevcut olmayan dizi
girdilerinden oluşan bir dizi ile döner. dizi
içindeki anahtarlar korunur.
Sürüm: | Açıklama |
---|---|
8.0.0 | Bu işlev artık yalnızca tek bir bağımsız değişken ile çağrılabiliyor. Evvelve en az iki bağımsız değişken gerekirdi. |
Örnek 1 - array_diff() örneği
<?php
$dizi1 = array("a" => "green", "red", "blue", "red");
$dizi2 = array("b" => "green", "yellow", "red");
$result = array_diff($dizi1, $dizi2);
print_r($result);
?>
$dizi1 içinde aynı değerde birden fazla eleman varsa hepsi tek bir girdi kabul edilir ve çıktı şöyle olur:
Array ( [1] => blue )
Örnek 2 - Eşleşmeyen türler ile array_diff()
İki elemanın eşit olması için sadece ve sadece
(string) $elem1 === (string) $elem2
olmalıdır.
Başka bir deyişle, dize
gösterimleri aynı olmalıdır.
<?php
// dizi dizeye dönüşürülemezse bir uyarı üretilir.
$source = [1, 2, 3, 4];
$filter = [3, 4, [5], 6];
$result = array_diff($source, $filter);
// nesneler dizeye dönüştürülebildiğinden burada sorun çıkmaz.
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 tek bir S('a') örneği içerir
?>
Başka bir karşılaştırma işlevi kullanmak isterseniz array_udiff() işlevine bakın.
Bilginize:
Bu işlev n boyutlu bir dizinin sadece bir boyutunu karşılaştırır. Daha derinliğine karşılaştırmalar yapmak için
array_diff($dizi1[0], $dizi2[0]);
sözdizimini kullanabilirsiniz.