Die PHP-Funktion array_udiff() vergleicht die Schlüsselwerte zweier Arrays und gibt die Differenz zurück

黄舟
Freigeben: 2023-03-17 08:46:01
Original
2619 Leute haben es durchsucht

Beispiel

Vergleicht die Schlüsselwerte von zwei Arrays (unter Verwendung einer benutzerdefinierten Benutzerfunktion zum Vergleichen von Schlüsselwerten) und gibt den Differenzsatz zurück:

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

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

$result=array_udiff($a1,$a2,"myfunction");
print_r($result);
?>
Nach dem Login kopieren
Definition und Verwendung

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

Hinweis: Diese Funktion verwendet eine benutzerdefinierte Funktion zum Vergleichen von Schlüsselwerten!

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

Syntax

array_udiff(array1,array2,array3...,myfunction)
Nach dem Login kopieren
参数描述
array1必需。与其他数组进行比较的第一个数组。
array2必需。与第一个数组进行比较的数组。
array3,...可选。与第一个数组进行比较的其他数组。
myfunction必需。一个定义了可调用比较函数的字符串。如果第一个参数 <, =, > 第二个参数,相应地比较函数必须返回一个 <, =, > 0 的整数。
Technische Details

更多实例

实例 1

比较三个数组的键值(使用用户自定义函数比较键值),并返回差集:

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

$a1=array("a"=>"red","b"=>"green","c"=>"blue","yellow");
$a2=array("A"=>"red","b"=>"GREEN","yellow","black");
$a3=array("a"=>"green","b"=>"red","yellow","black");

$result=array_udiff($a1,$a2,$a3,"myfunction");
print_r($result);

?>
Nach dem Login kopieren
<?php  
// array_udiff()  
class Obj  
{  
    private $code = 0;  
  
    public function construct($code)  
    {  
        $this->code = intval($code);  
    }  
  
    public function getCode()  
    {  
        return $this->code;  
    }  
  
    /** 
     * 该函数必须根据实际情况返回 0, 1, -1 这三种值,才能正确计算出差集 
     */  
    public static function cmp($a, $b)  
    {  
        if ($a->getCode() === $b->getCode()) return 0;  
        return $a->getCode() > $b->getCode() ? 1 : -1;  
    }  
  
    /** 
     * 此种形式是在《深入PHP面向对象模式与实践》一书看到的写法 
     * 经验证是无效的,具体在第十章讲解组合模式处 
     */  
    public static function cmp2($a, $b)  
    {  
        return $a === $b ? 0 : 1;  
    }  
}  
  
$e1 = new Obj(&#39;111&#39;);  
$e2 = new Obj(&#39;222&#39;);  
$e3 = new Obj(&#39;333&#39;);  
$e4 = new Obj(&#39;444&#39;);  
$e5 = new Obj(&#39;555&#39;);  
$e6 = new Obj(&#39;666&#39;);  
  
$arr = [$e1, $e2, $e3, $e4, $e5, $e6];  
$arr2 = [$e2, $e3, $e6];  
  
$arr = array_udiff($arr, $arr2, [&#39;Obj&#39;, &#39;cmp&#39;]);  
// $arr = array_udiff($arr, $arr2, [&#39;Obj&#39;, &#39;cmp2&#39;]); // cmp2 这个比较方法无法返回正确结果  
var_dump($arr);
Nach dem Login kopieren

array_diff 使用注意:

1. 返回差集中,键名保留不变

2. 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。


类似的函数:

array_diff_assoc

array_diff_uassoc

array_diff_key

array_diff_ukey

array_udiff_assoc

array_udiff_uassoc

总结:

array_diff, array_udiff 仅根据 value 判断

array_diff_key, array_diff_ukey 仅根据 key 判断

array_diff_assoc, array_diff_uassoc, array_udiff_assoc, array_udiff_uassoc 根据 key和value 一起来判断

Das obige ist der detaillierte Inhalt vonDie PHP-Funktion array_udiff() vergleicht die Schlüsselwerte zweier Arrays und gibt die Differenz zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage