Heim  >  Artikel  >  Backend-Entwicklung  >  PHP verwendet zwei benutzerdefinierte Schlüsselnamen-Vergleichsfunktionen array_udiff_uassoc()

PHP verwendet zwei benutzerdefinierte Schlüsselnamen-Vergleichsfunktionen array_udiff_uassoc()

黄舟
黄舟Original
2017-11-09 09:32:241700Durchsuche

Beispiel

Vergleicht die Schlüsselnamen und Schlüsselwerte von zwei Arrays (unter Verwendung der vom Benutzerbenutzerdefinierten Funktion zum Vergleich) und gibt den Differenzsatz zurück:

<?php
function myfunction_key($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

function myfunction_value($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","c"=>"green");

$result=array_udiff_uassoc($a1,$a2,"myfunction_key","myfunction_value");
print_r($result);
?>

Definition und Verwendung

Die Funktion array_udiff_uassoc() wird verwendet, um die Schlüsselnamen und Schlüsselwerte von zwei (oder mehr) Arrays zu vergleichen und die Differenz zurückzugeben.

Hinweis: Diese Funktion verwendet zwei benutzerdefinierte Funktionen zum Vergleich; die erste Funktion vergleicht Schlüsselnamen und die zweite Funktion vergleicht Schlüsselwerte!

Diese Funktion vergleicht die Schlüsselnamen und Schlüsselwerte von zwei (oder mehr) Arrays und gibt ein Differenzarray zurück, das alles im verglichenen Array (Array1) enthält, jedoch nicht in einem anderen Schlüsselname und Schlüsselwert im Parameterarray (Array2 oder Array3 usw.).

Syntax

array_udiff_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)
Parameter Beschreibung
array1 Erforderlich . Das erste Array, das mit anderen Arrays verglichen wird.
array2 Erforderlich. Das Array, das mit dem ersten Array verglichen werden soll.
array3,... Optional. Zusätzliches Array zum Vergleich mit dem ersten Array.
myfunction_key Erforderlich. Der Name der benutzerdefinierten Funktion, die zum Vergleichen von Array-Schlüsselnamen verwendet wird.
Eine Zeichenfolge
参数 描述
array1 必需。与其他数组进行比较的第一个数组。
array2 必需。与第一个数组进行比较的数组。
array3,... 可选。与第一个数组进行比较的其他数组。
myfunction_key 必需。用于比较数组键名的用户自定义函数的名称。
一个定义了可调用比较函数的字符串。如果第一个参数 f2c570bc5a616fb55b90df8c3566974f 第二个参数,相应地比较函数必须返回一个 f2c570bc5a616fb55b90df8c3566974f 0 的整数。
myfunction_value 必需。用于比较数组键值的用户自定义函数的名称。
一个定义了可调用比较函数的字符串。如果第一个参数 f2c570bc5a616fb55b90df8c3566974f 第二个参数,相应地比较函数必须返回一个 f2c570bc5a616fb55b90df8c3566974f 0 的整数。
, die eine aufrufbare Vergleichsfunktion definiert. Wenn das erste Argument f2c570bc5a616fb55b90df8c3566974f und das zweite Argument ist, muss die entsprechende Vergleichsfunktion eine Ganzzahl von f2c570bc5a616fb55b90df8c3566974f zurückgeben.
myfunction_value Erforderlich. Der Name der benutzerdefinierten Funktion, die zum Vergleichen von Array-Schlüsselwerten verwendet wird.
Eine Zeichenfolge, die eine aufrufbare Vergleichsfunktion definiert. Wenn das erste Argument f2c570bc5a616fb55b90df8c3566974f und das zweite Argument ist, muss die entsprechende Vergleichsfunktion eine Ganzzahl von f2c570bc5a616fb55b90df8c3566974f zurückgeben.

Technische Details

返回值: 返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。
PHP 版本: 5+

Beispiel:

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

Laufergebnis:

Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )

    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )
)

Im obigen Beispiel erscheint das Schlüssel-Wert-Paar „1“ => new cr(4) gleichzeitig in beiden Arrays, sodass es nicht in der Ausgabe dieser Funktion enthalten ist. Denken Sie daran, dass zwei Rückruffunktionen bereitgestellt werden müssen.

Das obige ist der detaillierte Inhalt vonPHP verwendet zwei benutzerdefinierte Schlüsselnamen-Vergleichsfunktionen array_udiff_uassoc(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn