function foo() {
$t = array();
foreach(func_get_args() as $r) {
foreach($r as $k=>$v) {
$t[$k][] = $v;
}
}
ksort($t);
foreach($t as $k=>$r) {
foreach($r as $v) {
printf('%s行:%s错误<br>', $k, $v);
}
}
}$a = array( 1=>'a',2=>'a',4=>'a' );
$b = array( 1=>'b',2=>'b',3=>'b' );
$c = array( 3=>'c' );foo($a, $b, $c);
$t = array();
foreach(func_get_args() as $r) {
foreach($r as $k=>$v) {
$t[$k][] = $v;
}
}
ksort($t);
foreach($t as $k=>$r) {
foreach($r as $v) {
printf('%s行:%s错误<br>', $k, $v);
}
}
}$a = array( 1=>'a',2=>'a',4=>'a' );
$b = array( 1=>'b',2=>'b',3=>'b' );
$c = array( 3=>'c' );foo($a, $b, $c);
$b = array( 1=>'b',2=>'b',3=>'b' );
$c = array( 3=>'c' );
$ak = array_keys( $a );
$bk = array_keys( $b );
$ck = array_keys( $c );$av = array_values( $a );
$bv = array_values( $b );
$cv = array_values( $c );$k = array_merge( $ak,$bk,$ck );
$v = array_merge( $av,$bv,$cv );asort( $k );
foreach( $k as $key=>$value )
{
print( $value.'行:'.$v[$key].'错误<br />' );
}
即结果为:
1行:a错误
2行:a错误
3行: b错误
3行: c错误
4行: a错误这个在上面的函数中怎么实现呢?谢谢啦**
$a = array( 1=>'a',2=>'a',4=>'a' );
$b = array( 1=>'b',2=>'b',3=>'b' );
$c = array( 3=>'c' );
function foo()
{
$d=array();
foreach(func_get_args() as $r)
{
foreach($r as $key=>$value)
{
array_push($d,$key."行:".$value."错误");
}
}
asort($d);
return $d;
}
$m = foo($a,$b,$c);
echo implode('<br>',$m);
刚才运行了你的程序,结果还是
1行:a错误
1行:b错误
2行:a错误
2行: b错误
3行: b错误
3行: c错误
4行: a错误
而不是:
1行:a错误
2行:a错误
3行: b错误
3行: c错误
4行: a错误
即:数组$a中各行的错误,如果在后面的数组中该行还有其它错误,不显示。
echo implode('<br>',$m);
可是现在没有重复的值啊。
那得加判断了
$a = array( 1=>'a',2=>'a',4=>'a');
$b = array( 1=>'b',2=>'b',3=>'b' );
$c = array( 3=>'c' );
function foo()
{
$d=array();
$argsArray = func_get_args();
foreach($argsArray as $args)
{
foreach($args as $key=>$value)
{
if($args == $argsArray[0])
{
array_push($d,$key."行:".$value."错误");
}
else
{
array_key_exists($key,$argsArray[0]) ? '' : array_push($d,$key."行:".$value."错误");
}
}
}
asort($d);
return $d;
}
$m =foo($a,$b,$c);//第一个参数必须是$a
echo implode('<br>',$m);