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);

解决方案 »

  1.   

    谢谢唠叨,我刚才想了个笨方法。不过还好用。呵呵$a = array( 1=>'a',2=>'a',4=>'a' );
    $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 />' );
    }
      

  2.   

    还想问个问题:在上述这个问题中,如果数组$a中各行出现过错误,后面$b,$c中该行出现的错误便不再显示。
    即结果为:
    1行:a错误
    2行:a错误
    3行: b错误
    3行: c错误
    4行: a错误这个在上面的函数中怎么实现呢?谢谢啦**
      

  3.   

    套用唠叨的思路,改一下即可
    $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);
      

  4.   

    foolbirdflyfirst(湖水清澈)你好:
    刚才运行了你的程序,结果还是
    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中各行的错误,如果在后面的数组中该行还有其它错误,不显示。
      

  5.   

    $m = array_unique(foo($a,$b,$c));
    echo implode('<br>',$m);
      

  6.   

    array_unique()不是移除数组中重复的值吗?
    可是现在没有重复的值啊。
      

  7.   

    ft~也不一次性说完需求
    那得加判断了
    $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);
      

  8.   

    呵呵,不好意思!!!谢谢 xuzuning(唠叨) && foolbirdflyfirst(湖水清澈) :)