TreeviewCopyright © aleen42 all right reserved, powered by aleen42
差集
array_diff — 计算数组的差集(比较值)
语法
array array_diff( array $array1, array $array2[, array $...] )
描述
- 对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值
参数
参数 | 描述 |
---|---|
array1 | 输入的数组 |
... | ... |
返回值
- 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变
举例
// 示例
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
// 结果
Array
(
[1] => blue
)
array_diff_key — 使用键名比较计算数组的差集(比较键)
语法
array array_diff_key( array $array1, array $array2[, array $...] )
描述
- 根据 array1 中的键名和 array2 进行比较,返回不同键名的项。本函数和 array_diff() 相同只除了比较是根据键名而不是值来进行的
参数
参数 | 描述 |
---|---|
array1 | 输入的数组 |
... | ... |
返回值
- array_diff_key() 返回一个数组,该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值
举例
// 示例
$array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
var_dump(array_diff_key($array1, $array2));
// 结果
array(2) {
["red"]=>
int(2)
["purple"]=>
int(4)
}
array_diff_assoc — 带索引检查计算数组的差集(同时比较键和值)
语法
array array_diff_assoc( array $array1, array $array2[, array $...] )
描述
- array_diff_assoc() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff() 不同的是键名也用于比较
参数
参数 | 描述 |
---|---|
array1 | 输入的数组 |
... | ... |
返回值
- 返回一个数组,该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值
举例
// 示例1
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
print_r($result);
// 结果
Array
(
[b] => brown
[c] => blue
[0] => red
)
// 示例2
$array1 = array(0, 1, 2);
$array2 = array("00", "01", "2");
$result = array_diff_assoc($array1, $array2);
print_r($result);
// 结果
Array
(
[0] => 0
[1] => 1
)
array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集(同时比较键和值,键是自定义函数)
语法
array array_diff_uassoc( array $array1, array $array2[, array $...], callable $key_compare_func)
描述
- 对比了 array1 和 array2 并返回不同之处。注意和 array_diff() 不同的是键名也用于比较。
- 和 array_diff_assoc() 不同的是使用了用户自定义的回调函数,而不是内置的函数
参数
参数 | 描述 |
---|---|
array1 | 输入的数组 |
... | ... |
key_compare_func | 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b ) |
返回值
- 返回一个 array,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值
举例
// 示例
function key_compare_func($a, $b)
{
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($result);
// 结果
Array
(
[b] => brown
[c] => blue
[0] => red
)
array_diff_ukey — 用回调函数对键名比较计算数组的差集(比较键,键是自定义函数)
语法
array array_diff_ukey( array $array1, array $array2[, array $ ...], callable $key_compare_func)
描述
- array_diff_ukey() 返回一个数组,该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值。注意关联关系保留不变。本函数和 array_diff() 相同只除了比较是根据键名而不是值来进行的
- 此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数
参数
参数 | 描述 |
---|---|
array1 | 输入的数组 |
... | ... |
key_compare_func | 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b ) |
返回值
// 示例
function key_compare_func($key1, $key2)
{
if ($key1 == $key2)
return 0;
else if ($key1 > $key2)
return 1;
else
return -1;
}
$array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
var_dump(array_diff_ukey($array1, $array2, 'key_compare_func'));
// 结果
array(2) {
["red"]=>
int(2)
["purple"]=>
int(4)
}
array_udiff_assoc — 带索引检查计算数组的差集,用回调函数比较数据(同时比较键和值,值是自定义函数)
语法
array array_udiff_assoc( array $array1, array $array2[, array $ ...], callable $data_compare_func)
描述
- 此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数
- Note: 注意本函数只检查了多维数组中的一维。当然,可以用 array_udiff_assoc($array1[0], $array2[0], "some_comparison_func"); 来检查更深的维度。
参数
参数 | 描述 |
---|---|
array1 | 输入的数组 |
... | ... |
data_compare_func | 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b ) |
返回值
- array_udiff_assoc() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。
- 注意和 array_diff() 与 array_udiff() 不同的是键名也用于比较。
- 数组数据的比较是用用户提供的回调函数进行的。在此方面和 array_diff_assoc() 的行为正好相反,后者是用内部函数进行比较的。
举例
// 示例
class cr {
private $priv_member;
function cr($val)
{
$this->priv_member = $val;
}
static function comp_func_cr($a, $b)
{
if ($a->priv_member === $b->priv_member) return 0;
return ($a->priv_member > $b->priv_member)? 1:-1;
}
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);
$result = array_udiff_assoc($a, $b, array("cr", "comp_func_cr"));
print_r($result);
// 结果
Array
(
[0.1] => cr Object
(
[priv_member:private] => 9
)
[0.5] => cr Object
(
[priv_member:private] => 12
)
[0] => cr Object
(
[priv_member:private] => 23
)
)
array_udiff_uassoc — 带索引检查计算数组的差集,用回调函数比较数据和索引(同时比较键和值,键和值都是自定义函数)
语法
array array_udiff_uassoc( array $array1, array $array2[, array $ ...], callable $data_compare_func, callable $key_compare_func)
描述
- array_udiff_uassoc() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。
- 注意和 array_diff() 与 array_udiff() 不同的是键名也用于比较。
参数
参数 | 描述 |
---|---|
array1 | 输入的数组 |
... | ... |
data_compare_func | 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b ) |
key_compare_func | 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b ) |
返回值
- 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值
举例
// 示例
class cr {
private $priv_member;
function cr($val)
{
$this->priv_member = $val;
}
static function comp_func_cr($a, $b)
{
if ($a->priv_member === $b->priv_member) return 0;
return ($a->priv_member > $b->priv_member)? 1:-1;
}
static function comp_func_key($a, $b)
{
if ($a === $b) return 0;
return ($a > $b)? 1:-1;
}
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);
$result = array_udiff_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr", "comp_func_key"));
print_r($result);
// 结果
Array
(
[0.1] => cr Object
(
[priv_member:private] => 9
)
[0.5] => cr Object
(
[priv_member:private] => 12
)
[0] => cr Object
(
[priv_member:private] => 23
)
)
array_udiff — 用回调函数比较数据来计算数组的差集(比较值,值是自定义函数)
语法
array array_udiff( array $array1, array $array2[, array $ ...], callable $data_compare_func)
描述
- array_udiff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。
- 注意键名保持不变。数据的比较是用 data_compare_func 进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。这和 array_diff() 不同,后者使用了内部函数来比较数据
参数
参数 | 描述 |
---|---|
array1 | 输入的数组 |
... | ... |
data_compare_func | 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b ) |
返回值
- 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值
举例
// 示例
class cr {
private $priv_member;
function cr($val)
{
$this->priv_member = $val;
}
static function comp_func_cr($a, $b)
{
if ($a->priv_member === $b->priv_member) return 0;
return ($a->priv_member > $b->priv_member)? 1:-1;
}
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);
$result = array_udiff($a, $b, array("cr", "comp_func_cr"));
print_r($result);
// 结果
Array
(
[0.5] => cr Object
(
[priv_member:private] => 12
)
[0] => cr Object
(
[priv_member:private] => 23
)
)