array_udiff_assoc()‎

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

(PHP 5, PHP 7)

تحسب الدالة array_udiff_assoc()‎ الفرق بين المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، وتقارن البيانات باستخدام دالة callback مُعرَّفة من المستخدم .

الوصف

array array_udiff_assoc ( array $array1 , array $array2 [, array $... ], callable$value_compare_func )

تحسب الدالة array_udiff_assoc()‎ الفرق بين المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، وتقارن البيانات باستخدام دالة مُعرَّفة من المستخدم callback.

المعاملات

array1

المصفوفة الأولى.

array2

المصفوفة الثانية.

value_compare_func

يجب أن تُعيد دالة المقارنة عددًا صحيحًا أقل من أو يساوي أو أكبر من الصفر إذا كان الوسيط الأول يعتبر أقل من أو يساوي أو أكبر من الوسيط الثاني على التوالي. لاحظ أنه قبل PHP 7.0.0 كان يجب أن يكون هذا العدد الصحيح في النطاق من ‎-2147483648 إلى 2147483647.

int callback ( mixed $a, mixed $b )

القيم المعادة

تعيد الدالة array_udiff_assoc()‎ مصفوفةً تحتوي على كافة القيم من array1 والتي تكون غير موجودة في أي من الوسائط الأخرى. لاحظ أن المفاتيح تُستخدم في المقارنة على عكس array_diff()‎ و array_udiff()‎. وتُقارن بيانات المصفوفات بواسطة دالة مُعّرفة من المستخدم (callback). في هذا الجانب، يكون السلوك معاكسًا لسلوك الدالة array_diff_assoc()‎ التي تستخدم دالةً داخليةً للمقارنة.

أمثلة

المثال 1: مثال على الدالة array_udiff_assoc()

<?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);
?>

سوف تكون مُخرجات المثال أعلاه كالتالي:

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)‎ موجود في كلتا المصفوفتين، وبالتالي فهو غير موجود في مخرجات الدالة.

ملاحظات

ملاحظة : يرجى ملاحظة أن هذه الدالة تفحص بُعدًا واحدًا فقط من مصفوفة متعددة الأبعاد (n-dimensional). ويمكننا بالطبع فحص أبعاد أعمق باستخدام الدالة التالية على سبيل المثال،

array_udiff_assoc($array1[0], $array2[0], "some_comparison_func");

انظر أيضًا

  • الدالة array_diff()‎: حساب الفرق بين المصفوفات.
  • الدالة array_diff_assoc()‎: حساب الفرق بين المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس.
  • الدالة array_diff_uassoc()‎: حساب الفرق بين المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس يُنفّذ بواسطة دالة مُعرّفة من المستخدم.
  • الدالة array_udiff()‎: حساب الفرق بين المصفوفات باستخدام دالة مُعرّفة من المستخدم للمقارنة بين البيانات.
  • الدالة array_udiff_uassoc()‎: حساب الفرق بين المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، ومقارنة البيانات والفهارس بواسطة دالة مُعرّفة من المستخدم.
  • الدالة array_intersect()‎: حساب تقاطع المصفوفات.
  • الدالة array_intersect_assoc()‎: حساب تقاطع المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس.
  • الدالة array_uintersect()‎: حساب تقاطع المصفوفات، ومقارنة البيانات بواسطة دالة مُعرّفة من المستخدم.
  • الدالة array_uintersect_assoc()‎: حساب تقاطع المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، ومقارنة البيانات بواسطة دالة مُعرّفة من المستخدم.
  • الدالة array_uintersect_uassoc()‎: حساب تقاطع المصفوفات مع استخدام تحقق إضافي بمقارنة الفهارس، ومقارنة البيانات والفهارس بواسطة دوال منفصلة مُعرّفة من المستخدم.

مصادر