array_udiff_uassoc()‎

من موسوعة حسوب
< PHP

(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()‎: حساب تقاطع المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، ومقارنة البيانات والفهارس بواسطة دوال منفصلة مُعرّفة من المستخدم.

مصادر