array_udiff_assoc
(PHP 5)
array_udiff_assoc — Veri karşılaştırması için bir geriçağırım işlevi kullanarak diziler arasındaki farkı indislerine de bakarak bulur
Açıklama
$dizi1
, array $dizi2
[, array $ ...
], callback $veri_karş_işlevi
)Veri karşılaştırması için bir geriçağırım işlevi kullanarak diziler arasındaki farkı indislerine de bakarak bulur.
Bilginize: Bu işlevin bir n boyutlu dizinin tek bir boyutunu ele alacağına dikkat ediniz. Şüphesiz daha fazla sayıda boyutun hesaba katılmasını, örneğin array_udiff_assoc($dizi1[0], $dizi2[0], "veri_karş_işlevi"); gibi bir kullanımla sağlayabilirsiniz.
Değiştirgeler
-
dizi1 -
İlk dizi.
-
dizi2 -
İkinci dizi.
-
veri_karş_işlevi -
Veri karşılaştırması için geriçağırım işlevi.
Kullanıcı tarafından sağlanır. Dizi değerlerinin aktarılacağı iki değiştirge kabul etmelidir. Birinci değiştirgenin ikinciden büyük, küçük veya ona eşit olduğu durumlarda sırayla sıfırdan büyük, sıfırdan küçük bir değer veya sıfır döndürmelidir.
Dönen Değerler
Diğer değiştirgelerin hiçbirinde mevcut olmayan tüm
dizi1 değerlerini içeren bir dizi ile döner.
Karşılaştırmada array_diff() ve
array_udiff() işlevlerinden farklı olarak anahtarlar
kullanılır. Verilerin karşılaştırması kullanıcı tarafından tanımlanmış
bir işlev kullanılarak yapılır. Verileri karşılaştırmak için dahili bir
işlev kullanan array_diff_assoc() işlevinden farklı
olarak bu işlev kullanıcı tanımlı bir işlev kullanır.
Örnekler
Örnek 1 - array_udiff_assoc() örneği
<?php
class cr {
private $priv_member;
function cr($val)
{
$this->priv_member = $val;
}
static function comp_func_cr($a, $b)
{
if ($a->priv_member === $b->priv_member) return 0;
return ($a->priv_member > $b->priv_member)? 1:-1;
}
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23),
1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3),
1=> new cr(4), 2 => new cr(-15),);
$result = array_udiff_assoc($a, $b, array("cr", "comp_func_cr"));
print_r($result);
?>
Yukarıdaki örneğin çıktısı:
Array
(
[0.1] => cr Object
(
[priv_member:private] => 9
)
[0.5] => cr Object
(
[priv_member:private] => 12
)
[0] => cr Object
(
[priv_member:private] => 23
)
)
Yukarıdaki örnekte gördüğünüz gibi "1" => new cr(4) çifti her iki dizide de mevcut olduğundan çıktıda gözükmemektedir.
Ayrıca Bakınız
- array_diff() - Dizilerin farkını hesaplar
- array_diff_assoc() - Dizilerin farkını hesaplarken ek olarak indisleri de karşılaştırır
- array_diff_uassoc() - Dizilerin farkını hesaplarken ek olarak bir geriçağırım işlevi üzerinden indisleri de karşılaştırır
- array_udiff() - Veri karşılaştırması için bir geriçağırım işlevi kullanarak diziler arasındaki farkı bulur
- array_udiff_uassoc() - Veri ve indis karşılaştırması için bir geriçağırım işlevi kullanarak diziler arasındaki farkı indislerine de bakarak bulur
- array_intersect() - Dizilerin kesişimini hesaplar
- array_intersect_assoc() - Dizilerin kesişimini hesaplarken ek olarak indisleri de karşılaştırır
- array_uintersect() - Veriyi bir geriçağırım işleviyle karşılaştırarak dizilerin kesişimini hesaplar
- array_uintersect_assoc() - Veriyi bir geriçağırım işleviyle karşılaştırarak dizilerin kesişimini hesaplarken ek olarak indislere de bakar
- array_uintersect_uassoc() - Veriyi ve indisleri bir geriçağırım işleviyle karşılaştırarak dizilerin kesişimini hesaplarken ek olarak indislere de bakar
