array_udiff的回调函数的原理 array_udiff的回调函数的原理是什么,如何比较的,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $a = array(1,2,3,4);$b = array('a','b','c','d');array_udiff($a, $b, function($a, $b) { echo "$a vs $b\n";});你看看结果,并比划比划 结果是:2 vs 14 vs 23 vs 24 vs 3b vs ad vs bc vs bd vs c4 vs d4 vs 33 vs 22 vs 1还是看不懂,$a 中这么会有字母呢,应该全是数字呀,$b中应该全是字母,怎么又数字呢? array_udiff() 函数用于比较两个(或更多个)数组的键值 ,并返回差集。myfunction的作用是定义比较方法,下面例子是比较值内容的<?phpfunction myfunction($a,$b){if ($a===$b) { return 0; } return ($a>$b)?1:-1;}$a1=array("a"=>"red","b"=>"green","c"=>"blue");$a2=array("a"=>"blue","b"=>"black","e"=>"blue");$result=array_udiff($a1,$a2,"myfunction");print_r($result);?>$a1的a值是red,不存在$a2$a2的b值是green,不存在$a2所以返回Array ( [a] => red [b] => green ) 那array_udiff和array_diff岂不是没啥区别了,我是想了解array_udiff的回调函数的运行机制,不是很了解,我上面也打印出回调函数里面的打印的值,不懂为什么会打印这些值,是什么样的运行机制。谢谢。 你没有认真去看传递给 array_udiff 回调函数的两个参数的关系吧?他是让你将两个数组的成员一一做个比较如果你按正常的方式进行比较的话,那么array_udiff 和 array_diff 就没有区别如果你按你的特殊规则进行比较的话,那就会产生你期望的另外的结果比如常规是 1 < 2,但你可以规定 1 = 2比如$a = [1,2,3,4];$b = [2,3];print_r(array_diff($a, $b));/*Array( [0] => 1 [3] => 4)*/print_r(array_udiff($a, $b, function($a, $b) { return $a<2?0:$a-$b;}));/*Array( [3] => 4)*/ PHP正则表达式 一个异常奇怪的问题:一刷新就异常,重新上传一下模板正常了,再刷新又异常。 ZEND提示Undefined variable: vals_! 关于PHP+ACCESS的树状论坛 如何将php运行模式从模块换成cgi? 请问怎么用php语句调用系统时间? 那位大哥帮帮忙啊,请问哪有下PHP编的联系人地址本的代码啊??(Mysql支持)急需啊~~ 如何判断字符串中存在的空格并且以"_"代替 请问~能不能直接用IIS解释PHP? php正则匹配问题 前端如何以流的形式上传文件,php接收流,边接收边处理 api返回的josn 数组。。如何循环读取出来。小白在线等
$b = array('a','b','c','d');
array_udiff($a, $b, function($a, $b) { echo "$a vs $b\n";});
你看看结果,并比划比划
2 vs 1
4 vs 2
3 vs 2
4 vs 3
b vs a
d vs b
c vs b
d vs c
4 vs d
4 vs 3
3 vs 2
2 vs 1还是看不懂,$a 中这么会有字母呢,应该全是数字呀,$b中应该全是字母,怎么又数字呢?
myfunction的作用是定义比较方法,下面例子是比较值内容的
<?php
function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");$result=array_udiff($a1,$a2,"myfunction");
print_r($result);
?>
$a1的a值是red,不存在$a2
$a2的b值是green,不存在$a2
所以返回
Array ( [a] => red [b] => green )
他是让你将两个数组的成员一一做个比较
如果你按正常的方式进行比较的话,那么array_udiff 和 array_diff 就没有区别
如果你按你的特殊规则进行比较的话,那就会产生你期望的另外的结果
比如常规是 1 < 2,但你可以规定 1 = 2
比如$a = [1,2,3,4];
$b = [2,3];
print_r(array_diff($a, $b));
/*
Array
(
[0] => 1
[3] => 4
)
*/print_r(array_udiff($a, $b, function($a, $b) { return $a<2?0:$a-$b;}));
/*
Array
(
[3] => 4
)
*/