詳解php中的array_diff() 函數

來源:互聯網
上載者:User

比較兩個數組的索引值,並返回差集:

<?php$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");$a2=array("e"=>"red","f"=>"green","g"=>"blue");$result=array_diff($a1,$a2);print_r($result);?>

array_diff() 函數用於比較兩個(或更多個)數組的索引值,並返回差集。

該函數比較兩個(或更多個)數組的索引值,並返回一個差集數組,該數組包括了所有在被比較的數組(array1)中,但是不在任何其他參數數組(array2 或 array3 等等)中的索引值。

文法

array_diff(array1,array2,array3...);

參數 描述

array1 必需。與其他數組進行比較的第一個數組。

array2 必需。與第一個數組進行比較的數組。

array3,... 可選。與第一個數組進行比較的其他數組。

返回一個差集數組,該數組包括了所有在被比較的數組(array1)中,但是不在任何其他參數數組(array2 或 array3 等等)中的索引值。

比較三個數組的索引值,並返回差集:

<?php    $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");    $a2=array("e"=>"red","f"=>"black","g"=>"purple");    $a3=array("a"=>"red","b"=>"black","h"=>"yellow");    $result=array_diff($a1,$a2,$a3);    print_r($result);?>
<pre><?phpheader("Content-Type:text/html;charset=utf-8");/*知識點一:array_diff — 計算數組的差集原形:array array_diff ( array $array1 , array $array2 [, array $... ] )功能:對比返回在 array1 中但是不在 array2 及後面參數數組中的值。返回:返回一個數組,該數組包括了所有在 array1 中但是不在任何其它參數數組中的值。注意:返回的數組鍵名保留不變。應用背景案例分析:假設我們做一個郵件群發系統,郵件都在數組 $a中保留。如果有本次我們不想發送給其中特定的幾個郵箱,沒必要從$a中刪除,因為下次還有添加比較麻煩。處理方法:在做一個數組$b,讓系統自動差集計算,不對在$b中包含的幾個使用者發郵件,其他都發送。 */ //例:/*$a = range(1,9);        //建立一個包含 1,2,3,4,5,6,7,8,9 的數組$b = array(5,6,1);        //計劃排除其中的 1,5,6$c = array_diff($a,$b); //結果為  2,3,4,7,8,9*/ //例:$a = array('動', '美', '學', '院'); $b = array('a'=>'學','美');$c = array_diff($a,$b);var_export($c);     //結果為 動 院/*知識點二:array_diff_assoc — 帶索引檢查計算數組的差集合函式原形:array array_diff_assoc ( array $array1 , array $array2 [, array $... ] )功能:計算差集,要求索引值對完全相同的才進行減去。返回:返回一個數組,該數組包括了所有在 array1 中但是不在任何其它參數數組中的"索引值對"*/$a = array('d' => '動', 'l' => '美', 'x' => '學', 'y' => '院'); $b = array('l' => '美','a' => '動' );$c = array_diff_assoc($a,$b);var_export($c); //結果:array ( 'd' => '動', 'x' => '學', 'y' => '院', )/*知識點三:array_diff_key — 使用鍵名比較計算數組的差集合函式原形:array array_diff_key ( array $array1 , array $array2 [, array $... ] )根據 array1 中的鍵名和 array2 進行比較,返回不同鍵名的項。 本函數和 array_diff() 相同只除了比較是根據鍵名而不是值來進行的。*/$a = array('d' => '動', 'l' => '美', 'x' => '學', 'y' => '院'); $b = array('d' => '學','l' => '美');$c = array_diff_key($a,$b);var_export($c);     //結果:array ( 'x' => '學', 'y' => '院', )/*目前關於array_diff的函數及變種一共有八個分別如下,比較實用的有三個array_diff_assoc — 帶索引檢查計算數組的差集array_diff_key — 使用鍵名比較計算數組的差集array_diff_uassoc — 用使用者提供的回呼函數做索引檢查來計算數組的差集array_diff_ukey — 用回呼函數對鍵名比較計算數組的差集array_diff — 計算數組的差集array_udiff_assoc — 帶索引檢查計算數組的差集,用回呼函數比較資料array_udiff_uassoc — 帶索引檢查計算數組的差集,用回呼函數比較資料和索引array_udiff — 用回呼函數比較資料來計算數組的差集*/?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.