<?php
// array_udiff用回调函数比较数据来计算数组的差集
// 要对比的数组
$array1 = array(new stdclass, new stdclass,
new stdclass, new stdclass,
);
$array2 = array(
new stdclass, new stdclass,
);
// 为每个对象设置一些属性
$array1[0]->width = 11; $array1[0]->height = 3;
$array1[1]->width = 7; $array1[1]->height = 1;
$array1[2]->width = 2; $array1[2]->height = 9;
$array1[3]->width = 5; $array1[3]->height = 7;
$array2[0]->width = 7; $array2[0]->height = 5;
$array2[1]->width = 9; $array2[1]->height = 2;
function compare_by_area($a, $b) {
$areaA = $a->width * $a->height;
$areaB = $b->width * $b->height;
if ($areaA < $areaB) {
return -1;
} elseif ($areaA > $areaB) {
return 1;
} else {
return 0;
}
}
$array3=array_udiff($array1, $array2, 'compare_by_area');
printf('<pre>%s</pre>',print_r($array3,true));
echo '<hr>';
// array_reverse — 返回单元顺序相反的数组
$input = array("php", 4.0, array("green", "red"));
$reversed = array_reverse($input);
$preserved = array_reverse($input, true);//true保持原有的key值,默认为false
printf('<pre>%s</pre>',print_r($input,true));
printf('<pre>%s</pre>',print_r($reversed,true));
printf('<pre>%s</pre>',print_r($preserved,true));
echo '<hr>';
// array_intersect_uassoc — 带索引检查计算数组的交集,用回调函数比较索引
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
printf('<pre>%s</pre>',print_r(array_intersect_uassoc($array1, $array2, "strcasecmp"),true));
echo '<hr>';
// array_walk_recursive — 对数组中的每个成员递归地应用用户函数
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
function test_print($item, $key)
{
echo "$key holds $item <br>";
}
array_walk_recursive($fruits, 'test_print');
echo '<hr>';
// array_uintersect — 计算数组的交集,用回调函数比较数据
$array5 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array4 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
printf('<pre>%s</pre>',print_r(array_uintersect($array5, $array4, "strcasecmp"),true));
效果: