array_udiff_uassoc()
(PHP 5, PHP 7)
تحسب الدالة array_udiff_uassoc()
الفرق بين المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، ومقارنة البيانات والفهارس بواسطة دالة callback
مُعرّفة من المستخدم.
الوصف
array array_udiff_uassoc ( array $array1 , array $array2 [, array $... ], callable$value_compare_func , callable $key_compare_func )
تحسب الدالة array_udiff_uassoc()
الفرق بين المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، ومقارنة البيانات والفهارس بواسطة دالة callback
مُعرّفة من المستخدم.
لاحظ أن المفاتيح تُستخدم في المقارنة على عكس array_diff()
و array_udiff()
.
المعاملات
array1
المصفوفة الأولى.
array2
المصفوفة الثانية.
value_compare_func
يجب أن تُعيد دالة المقارنة عدد صحيح أقل من أو يساوي أو أكبر من الصفر إذا كان الوسيط الأول يعتبر أقل من أو يساوي أو أكبر من الوسيط الثاني على التوالي. لاحظ أنه قبل PHP 7.0.0 كان يجب أن يكون هذا العدد الصحيح في النطاق من -2147483648 إلى 2147483647.
int callback ( mixed $a, mixed $b )
key_compare_func
تُقارن المفاتيح (الفهارس) أيضًا عن طريق الدالة المُعرفة من المستخدم key_compare_func
. ويختلف هذا السلوك عن ما تفعله الدالة array_udiff_assoc()
، إذ تقارن الأخيرة بين الفهارس باستخدام دالة داخلية.
القيم المعادة
تٌعيد الدالة مصفوفة تحتوي على جميع القيم من المصفوفة array1
والتي تكون غير موجودة في أي من الوسائط الأخرى.
أمثلة
المثال 1: مثال على الدالة array_udiff_uassoc()
<?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;
}
static function comp_func_key($a, $b)
{
if ($a === $b) return 0;
return ($a > $b)? 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_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr", "comp_func_key"));
print_r($result);
?>
سوف تكون مُخرجات المثال أعلاه كالتالي:
Array
(
[0.1] => cr Object
(
[priv_member:private] => 9
)
[0.5] => cr Object
(
[priv_member:private] => 12
)
[0] => cr Object
(
[priv_member:private] => 23
)
)
في المثال أعلاه، سترى الزوج "1" => new cr(4)
موجود في كلتا المصفوفتين، وبالتالي فهو غير موجود في مخرجات الدالة. ضع في الحسبان أنه يجب عليك توفير دالتين callback
مُعرفّتيْن من المستخدم.
ملاحظات
ملاحظة : يرجى ملاحظة أن هذه الدالة تفحص بُعدًا واحدًا فقط من مصفوفة متعددة الأبعاد (n-dimensional). ويمكننا بالطبع فحص أبعاد أعمق باستخدام الدالة التالية على سبيل المثال،
array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");
انظر أيضًا
- الدالة
array_diff()
: حساب الفرق بين المصفوفات. - الدالة
array_diff_assoc()
: حساب الفرق بين المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس. - الدالة
array_udiff()
: حساب الفرق بين المصفوفات باستخدام دالة مُعرّفة من المستخدم للمقارنة بين البيانات. - الدالة
array_udiff_assoc()
: حساب الفرق بين المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، ومقارنة البيانات باستخدام دالة مُعرَّفة من المستخدم. - الدالة
array_intersect()
: حساب تقاطع المصفوفات. - الدالة
array_intersect_assoc()
: حساب تقاطع المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس. - الدالة
array_uintersect()
: حساب تقاطع المصفوفات، ومقارنة البيانات بواسطة دالة مُعرّفة من المستخدم. - الدالة
array_uintersect_assoc()
: حساب تقاطع المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، ومقارنة البيانات بواسطة دالة مُعرّفة من المستخدم. - الدالة
array_uintersect_uassoc()
: حساب تقاطع المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، ومقارنة البيانات والفهارس بواسطة دوال منفصلة مُعرّفة من المستخدم.