首頁  >  文章  >  後端開發  >  PHP array_diff 的應用

PHP array_diff 的應用

WBOY
WBOY原創
2016-07-28 08:27:151039瀏覽

定義與用法:

array_diff() 函數傳回兩個陣列的差集陣列。此數組包括了所有在被比較的數組中,但是不在任何其他參數數組中的鍵值。

在傳回的陣列中,鍵名保持不變。

語法

array_diff(<em>array1</em>,<em>array2</em>,<em>array3</em>...);
参数 描述
array1 必需。与其他数组进行比较的第一个数组。
array2 必需。与第一个数组进行比较的数组。
array3 可选。与第一个数组进行比较的其他数组
提示與註解

提示:可用一個或任意多個陣列與第一個陣列進行比較。

回傳值

返回值: 返回差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2array3 等等)中的键值。
PHP 版本: 4.0.1+

說明:

      只知道他是比較差集的,也沒怎麼多想,但是最近我的專案中有關於標籤的處理問題,用到了這個,以前從來沒有這樣用過,這裡記錄下,以後再有這種情況,也可以應用下.

          我的業務要求:每個客戶可以有單一或多個標籤,而標籤儲存要儲存為單一或多重記錄,那麼對於新增,很簡單了,就是新增一條,或者批量添加多條記錄,但是修改,就不太一樣了,就是以最新的為主,通俗的說,就是要是舊標籤裡面不包含新的標籤,那麼我們要添加新標籤,刪除舊標籤.但還有情況是:  假如舊標籤中有部分是包含新標籤的其中一個或者多個,那麼問題就是,我們出去舊標籤中不包含新標籤的,添加新標籤在舊標籤中不存在的.估計有點暈了,我舉例說明:

舉例:

          舊標: [A,  B, C ]           新標籤:  [C, D, E]

分析如下:

        1:  其實我們目的是: 以新的為準:   我們將新標籤中的D, E新增, 將舊標籤中的A,B刪除

像上面這種情況, 我第一次想到就是把舊標籤全刪除,然後添加新的,不就行了,  但是細細想想不妥,  刪除啊,什麼概念啊,我知道對於數據表中的數據刪除,是很慎重的,再說了,現在可能項目中,每個用戶就有幾個標籤,那要是有很多個那,難道我們還要刪除嗎? 還有就是當我們刪除表資料時, 會發現資料檔案尺寸並沒有減小。這是因為刪除操作後在資料檔案中留下碎片所致.  所以這種方法不可取!

然後可能我又會想到,遍歷他們吧,讓後進行比較,不對照的添加或者刪除,我發現這種特別麻煩,兩個數據都要進行遍歷,數據要一條一條進行比較,數據少還行,數據多了,就不好了!

所以這次我們想到一個方法,就是利用了php函數array-diff()

例如: 

       1:   array_diff (舊式, 新) => [A, B]   for:禁用狀態)

       2:   array_diff(新, 舊)  =>  [D ,E]   => 了,也把新的加了,是不是不錯的..........

   


以上就介紹了 PHP array_diff 的應用,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn