解决方案 »
- 请教preg_match() [function.preg-match]: Compilation failed: nothing to repeat at
- 注一个数组的入库问题
- 如何访问服务器上的.exe文件?
- nginx上的session总是会消失?
- Apache1.3+php+Oracle9i配置文档
- php转换过的时间数值怎么在mysql里转换?
- 进来帮我测试的朋友都有分。。。
- 关于php生成PNG图片.保存文件字节数总是为0,为什么?
- 如何在linux上安装gd?
- thinkphp save方法一直不行 崩溃!!!!!
- 如何去除字符串中非汉字、非字母、非数字的字符?
- TP的关联模型...
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_intersect_ukey ( $array1 , $array2 , 'key_compare_func' ));输出结果:
array(2) {
["blue"]=>
int(1)
["green"]=>
int(3)
}
这些例子php手册下面都有实例的
$array = array("red"=>"Red","green"=>"red4","Red15"=>"Red",7=>"Level","Width"=>"Red","azzzz1"=>"art","peak"=>158);
$array1 = array("red"=>"Red2","greena"=>"red","Red15"=>"Red",7=>"Level","Width"=>"Red","azzzz"=>"art","peak"=>158);
$num = array_intersect($array,$array1);
print_r ($num);
echo "
";
$num = array_intersect_assoc($array,$array1);
print_r($num);
echo "
";
$num = array_intersect_key($array,$array1);
print_r ($num);
?>详细请看http://web10000.cn/thread-126-1-1.html
希望能帮助到你
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 );print_r( array_intersect_key ( $array1 , $array2 ));
print_r( array_intersect_ukey ( $array1 , $array2 , 'key_compare_func' ));得Array
(
[blue] => 1
[green] => 3
)
Array
(
[blue] => 1
[green] => 3
)可知 array_intersect_key 内部使用了与 key_compare_func 等价的函数
array_intersect_ukey 可以通过回调函数改变默认行为function key_compare_func ( $key1 , $key2 ) {
if ( strtolower($key1) == strtolower($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 );print_r( array_intersect_key ( $array1 , $array2 ));
print_r( array_intersect_ukey ( $array1 , $array2 , 'key_compare_func' ));Array
(
[green] => 3
)
Array
(
[Blue] => 1
[green] => 3
可以看到,比较时已不再区分大小写了
array_intersect_ukey明白了。
那array_intersect_uassoc函数,手册上说:“注意,与 array_intersect_assoc() 不同的是除了比较键值,还要比较键名” 手册上给的例子,function中只是比较了值。并没有提到键的比较呢。
if ( strtolower($key1) == strtolower($key2) )
return 0 ;
else if ( $key1 > $key2 )
return 1 ;
else
return - 1 ;
}
$array1 = array( 'Blue' => 1 , 'red' => 2 , 'green' => 3 , 'purple' => 4 );
$array2 = array( 'blue' => 1 , 'green' => 5 , 'yellow' => 7 , 'cyan' => 8 );print_r( array_intersect_assoc ( $array1 , $array2 ));
print_r( array_intersect_uassoc ( $array1 , $array2 , 'key_compare_func' ));Array
(
)
Array
(
[Blue] => 1
)
看出来了吗?
array_intersect_uassoc 就是用回调函数判别键如果要自己判断值和键,则要用 array_uintersect_uassoc 函数
并传递两个回调函数