判斷兩個多維陣列是否相等,或有哪些元素區別。我們可以透過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","return strcmp(implode("",$a),implode("",$b));")
);
echo "<pre>";
print_r($color);
此段程式碼中,我們就可以得出$color1陣列相對於$color2陣列有哪些不同的陣列元素。
輸出比較結果如下:
ff44dfd3ad9a71ec1976a4de9a645c9.png
函式介紹:
1、array_udiff : 用回撥函式比較資料來計算陣列的差集
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:建立一個匿名函式
create_function ( string $args , string $code ): string
根據傳遞的引數建立匿名函式,併為其返回唯一名稱。
通常這些引數將作為單引號分隔的字串傳遞。使用單引號字串的原因是為了保護變數名稱不被解析,否則,如果使用雙引號,則需要轉義變數名稱,例如\ $ avar。
args表示函式引數。code表示功能程式碼。
返回值是以字串或FALSE錯誤形式返回唯一函式名稱。
3、strcmp :二進位制安全字串比較
strcmp ( string $str1 , string $str2 ) : int
注意該比較區分大小寫。
引數str1表示第一個字串。str2表示第二個字串。
返回值是如果 str1 小於 str2 返回 < 0; 如果 str1 大於 str2 返回 > 0;如果兩者相等,返回 0。
4、implode:將一個一維陣列的值轉化為字串
判斷兩個多維陣列是否相等,或有哪些元素區別。我們可以透過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","return strcmp(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:將一個一維陣列的值轉化為字串