= 4.0.1, PHP 5, PHP 7, PHP 8)array_diff — 計(jì)算數(shù)組的差集說(shuō)明array_diff(array $array, array ...$arrays): array對(duì)比 array 和其他一個(gè)或者多個(gè)數(shù)組,返回在 array 中">

array_diff

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

array_diff計(jì)算數(shù)組的差集

說(shuō)明

array_diff(array $array, array ...$arrays): array

對(duì)比 array 和其他一個(gè)或者多個(gè)數(shù)組,返回在 array 中但是不在其他 array 里的值。

參數(shù)

array

要被對(duì)比的數(shù)組

arrays

和更多數(shù)組進(jìn)行比較

返回值

返回一個(gè)數(shù)組,該數(shù)組包括了所有在 array 中但是不在任何其它參數(shù)數(shù)組中的值。注意鍵名保留不變。 保留數(shù)組 array 里的鍵。

范例

示例 #1 array_diff() 例子

<?php
$array1 
= array("a" => "green""red""blue""red");
$array2 = array("b" => "green""yellow""red");
$result array_diff($array1$array2);

print_r($result);
?>

$array1 中多次出現(xiàn)的值一樣處理,輸出結(jié)果為:

Array
(
    [1] => blue
)

示例 #2 array_diff() 不匹配類(lèi)型的示例

兩個(gè)元素只有在 (string) $elem1 === (string) $elem2 相等時(shí)視為一致。 也就是字符串轉(zhuǎn)換表達(dá)相同。

<?php
// 數(shù)組無(wú)法轉(zhuǎn)換成字符串時(shí)會(huì)產(chǎn)生 Notice 警告
$source = [1234];
$filter = [34, [5], 6];
$result array_diff($source$filter);

// 而這個(gè)就可以,因?yàn)閷?duì)象可以轉(zhuǎn)換成字符串
class {
  private 
$v;

  public function 
__construct(string $v) {
    
$this->$v;
  }

  public function 
__toString() {
    return 
$this->v;
  }
}

$source = [new S('a'), new S('b'), new S('c')];
$filter = [new S('b'), new S('c'), new S('d')];

$result array_diff($source$filter);

// $result 包含了一個(gè) S('a'); 實(shí)例
?>

想要使用函數(shù)來(lái)比較,可使用 array_udiff()。

注釋

注意:

注意本函數(shù)只檢查了多維數(shù)組中的一維。當(dāng)然可以用 array_diff($array1[0], $array2[0]); 檢查更深的維度。

參見(jiàn)