再问多维数组比较问题

dreams1981 2009-07-25 04:21:48

$q[] = Array ('a' => '1', 'b' => '11');
$q[] = Array ('a' => '2', 'b' => '22');
$s[] = Array ('a' => '1', 'b' => '11');
$s[] = Array ('a' => '2', 'b' => 'BB');
$s[] = Array ('a' => '3', 'b' => 'CC' );
$s[] = Array ('a' => '4', 'b' => '11');

$d = array_diff($s,$q);//知道不是这样写
结果是:
Array ( [1] => Array ('a' => '2', 'b' => 'BB'),
[2] => Array ('a' => '3', 'b' => 'CC' ),
[3] => Array ('a' => '4', 'b' => '11'));

$e = array_diff($s,$q);//知道不是这样写
结果是:
Array ( [1] => Array ('a' => '2', 'b' => '22'));

======================================
该如何实现呢? 有没有这样的函数
...全文
30 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreams1981 2009-07-25

$q[] = Array ('a' => '1', 'b' => '11');
$q[] = Array ('a' => '2', 'b' => '22');
$s[] = Array ('a' => '1', 'b' => '11');
$s[] = Array ('a' => '2', 'b' => 'BB');
$s[] = Array ('a' => '3', 'b' => 'CC' );
$s[] = Array ('a' => '4', 'b' => '11');

$d = array_diff($s,$q);//知道不是这样写
结果是:
Array ( [1] => Array ('a' => '2', 'b' => 'BB'),
[2] => Array ('a' => '3', 'b' => 'CC' ),
[3] => Array ('a' => '4', 'b' => '11'));

$e = array_diff($q,$s);//知道不是这样写
结果是:
Array ( [1] => Array ('a' => '2', 'b' => '22'));


第二个是写错了,,,上面才对..."blueforyou"的方法我知道;我是想看看有没有现成的比较函数可用!不过同样谢谢blueforyou 的回复
回复
blueforyou 2009-07-25
第一个

function myArrayDiff($s,$q){
$d=array();
foreach($q as $qKey=>$qValue){
foreach($s as $sKey=>$sValue){
if($sValue!=$qValue){
if(!in_array($sValue,$d)) $d[]=$sValue;
}else{
unset($s[$sKey]);
}
}
}
return $d;
}
print_r(myArrayDiff($s,$q));

第二个不咋明白你的意思,描述一下你的想法?
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告