判斷兩個多維數組是否相等,或有哪些元素區別。我們可以通過PHP中array_udiff()函數和create_function()方法、strcmp()等函數來實現比較。
下面我們就結合具體的代碼示例,給大家介紹比較兩個二維數組的方法。
代碼示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//多維數組比較
$color1=array(array('Red',80),array('Green',70),array('white',60));
$color2=array(array('Green',70),array('Black',95));
$color=array_udiff($color1,$color2,create_function(
'$a,$b','returnstrcmp(implode("",$a),implode("",$b));')
);
echo"<pre>";
print_r($color);
此段代碼中,我們就可以得出$color1數組相對于$color2數組有哪些不同的數組元素。
輸出比較結果如下:
ff44dfd3ad9a71ec1976a4de9a645c9.png
函數介紹:
1、array_udiff:用回調函數比較數據來計算數組的差集
1
array_udiff(array$array1,array$array2[,array$...],callable$value_compare_func):array
使用回調函數比較數據,計算數組的不同之處。和array_diff()不同的是,前者使用內置函數進行數據比較。
參數array1表示第一個數組。array2第二個數組。value_compare_func回調對照函數。
在第一個參數小于,等于或大于第二個參數時,該比較函數必須相應地返回一個小于,等于或大于0的整數。
callback(mixed$a,mixed$b):int
返回值,返回array1里沒有出現在其他參數里的所有值。
2、create_function:創建一個匿名函數
1
create_function(string$args,string$code):string
根據傳遞的參數創建匿名函數,并為其返回唯一名稱。
通常這些參數將作為單引號分隔的字符串傳遞。使用單引號字符串的原因是為了保護變量名稱不被解析,否則,如果使用雙引號,則需要轉義變量名稱,例如\$avar。
args表示函數參數。code表示功能代碼。
返回值是以字符串或FALSE錯誤形式返回唯一函數名稱。
3、strcmp:二進制安全字符串比較
1
strcmp(string$str1,string$str2):int
注意該比較區分大小寫。
參數str1表示第一個字符串。str2表示第二個字符串。
返回值是如果str1小于str2返回<0;如果str1大于str2返回>0;如果兩者相等,返回0。
4、implode:將一個一維數組的值轉化為字符串
本篇文章就是關于比較兩個PHP多維數組的方法介紹,也很簡單易懂,希望對需要的朋友有所幫助!