PHP关于回调函数的问题

通过回调函数,比较这两个数组的差值,只对键值进行比较。$arr1=array("a"=>"aa","b"=>"b","c"=>"c");$arr2=array("a"=>... 通过回调函数,比较这两个数组的差值,只对键值进行比较。

$arr1=array("a"=>"aa","b"=>"b","c"=>"c");
$arr2=array("a"=>"a","b"=>"bb","c"=>"c");
function func($v1,$v2){
if($v1===$v2) return 0;
if($v1>$v2) return 1;
if($v1<$v2) return -1;
}
$arr3=array_udiff($arr1,$arr2,func);
print_r($aa3);

代码如上,不清楚这个函数的作用,当RETURN为0或者1或者-1的时候,func()函数 与 $arr3 中的 func 有什么关系?
展开
 我来答
百度网友a19d193
2013-09-11 · TA获得超过3446个赞
知道大有可为答主
回答量:1464
采纳率:100%
帮助的人:1491万
展开全部
原文

PHP Array 函数
定义和用法

array_udiff() 函数返回一个数组,该数组包括了所有在被比较数组中,但是不在任何其它参数数组中的值,键名保留不变。

array_udiff() 函数与 array_diff() 函数 的行为不同,后者用内部函数进行比较。

数据的比较是用 array_udiff() 函数的 function 进行的。function 函数带有两个将进行比较的参数。如果第一个参数小于第二个参数,则函数返回一个负数,如果两个参数相等,则要返回 0,如果第一个参数大于第二个,则返回一个正数。

其实传入的参数作用是指定对比规则,实际上就是用户可以自己定义什么是大于,等于,小于

例如,正常的用法
function($a,$b){
if($a > $b) return 1;
if($a < $b) return -1;
return 0;
}
但是,如果有特殊的需求,我们也可以声明特别的规则,如
function ($a, $b) {
if($a + 1 > $b) return -1;
if ($a + 1 < $b) return 1;
if ($a + 1 == $b) return 0;
}
追问
谢谢你的回答。$v1全等于$v2我明白,但是大于和小于是怎么比较的,这也不是数字。
$arr3=array_udiff($arr1,$arr2,func);中当代入之后函数是1的时候,对这个数组有什么影响?为0的时候和为-1的时候,都有什么影响....
juzelong630
2013-09-11 · TA获得超过428个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:163万
展开全部
$arr1=array("a"=>"aa","b"=>"b","c"=>"c");
$arr2=array("a"=>"a","b"=>"bb","c"=>"c");
function func($v1,$v2){
if($v1===$v2) return 0;
if($v1>$v2) return 1;
if($v1<$v2) return -1;
}
$arr3=array_udiff($arr1,$arr2,"func");
print_r($arr3);
你代码是不是打错了。。。以上是比较正确的版本
这个函数就是按数组位校验不同项,不同的就将被比的值输出出来,不考虑键值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
某一天的尽头
2013-09-11
知道答主
回答量:20
采纳率:0%
帮助的人:8.3万
展开全部
看下面 例子 或许你 会明白..

<?php
class cr {
private
$priv_member;
function cr($val)
{
$this->priv_member = $val;
}

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
)

)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
550798276
2013-09-11 · TA获得超过105个赞
知道答主
回答量:50
采纳率:0%
帮助的人:60.1万
展开全部
func函数带有两个将进行比较的参数。如果第一个参数小于第二个参数,则函数返回一个负数,如果两个参数相等,则要返回 0,如果第一个参数大于第二个,则返回一个正数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杭州基点科技有限公司
2013-09-11 · TA获得超过127个赞
知道答主
回答量:115
采纳率:0%
帮助的人:24.8万
展开全部
回调函数就是当不满足这个值的时候 ,继续调用这个函数, 知道满足为止退出循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ylpsghr881212
2013-09-11 · 超过30用户采纳过TA的回答
知道答主
回答量:166
采纳率:0%
帮助的人:64.4万
展开全部
我觉得这个问题去看看w3school比较好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式