数组1
$table=Array 

[0] => Array ( [0] => id [1] => int(10) ) 
[1] => Array ( [0] => usname [1] => varchar(20) )
[2] => Array ( [0] => psw [1] => varchar(32) ) 
[3] => Array ( [0] => relname [1] => varchar(20) ) 
[4] => Array ( [0] => tel [1] => varchar(20) ) 
[5] => Array ( [0] => state [1] => int(10) ) 
[6] => Array ( [0] => logtime [1] => datetime

数组2
$arr=Array 

[0] => Array ( [0] => 381 [1] => 联系人: [2] => relname) 
[1] => Array ( [0] => 382 [1] => 性别: [2] => sex) 
[2] => Array ( [0] => 383 [1] => 地址: [2] => address) 
[3] => Array ( [0] => 384 [1] => 邮箱: [2] => email) 
)
需要实现的功能要求:比较数组1是一张数据库表userList的字段名,用数组2来更新表,数据记录不能丢,有新字段时-》添加
少了字段->删除 
求一个写法:$addArr=array()      //需要增加的字段名 做成一个数组
$delArr=array()      //需要删除的字段名 做成一个数组

解决方案 »

  1.   

    问题描述太模糊。是不是这样:
    1)userlist是一个用户表,对应数组1?
    2)数组2是用来接收数据,接收到的存入userlist?你的需求是:
    写一个算法,实现数组2存入userlist?
      

  2.   

     其实楼主的要求已经很明确了, 不过我现在不想动手做, 大至意思是:  遍历第二个数组, 里面作一个判断 : 条件是当值存在于第一个数组里时放进$addArr, 剩下没有的放进$delArr, 是这样吗? 
      

  3.   

    $table = array(
    array('id', 'int(10)'),
    array('usname', 'varchar(20)'),
    array('psw', 'varchar(32)'),
    array('relname', 'varchar(20)'),
    array('tel', 'varchar(20)'),
    array('state', 'int(10)'),
    array('logtime', 'datetime'));$arr = array(
    array(381, '联系人:', 'relname'),
    array(382, '性别:', 'sex'),
    array(383, '地址:', 'address'),
    array(384, '邮箱:', 'email'));foreach($table as $row) {
    $exists = false;
    foreach($arr as $item) {
    if($row[0] == $item[2]) {
    $exists = true;
    break;
    }
    }
    if(!$exists) {
    $delArr[] = $row[0];
    }
    }foreach($arr as $item) {
    $exists = false;
    foreach($table as $row) {
    if($item[2] == $row[0]) {
    $exists = true;
    break;
    }
    }
    if(!$exists) {
    $addArr[] = $item[2];
    }
    }
      

  4.   

    <?php$table=Array 

      Array ( 'id', 'int(10)' ), 
      Array ( 'usname', 'varchar(20)' ), 
      Array ( 'psw', 'varchar(32)' ) ,
      Array ( 'relname', 'varchar(20)' ), 
      Array ( 'tel', 'varchar(20)' ) ,
      Array ( 'state', 'int(10)' ) ,
      Array ( 'logtime', 'datetime')
    ) ;$arr=Array 

    Array ( 381, 'lxr', 'relname'), 
    Array ( 382, 'xb', 'sex') ,
    Array ( 383, 'dz', 'address'), 
    Array ( 384, 'yx', 'email') 
    ) ;
    function comp($a,$b){
    $va=count($a)==2?$a[0]:$a[2];
    $vb=count($b)==2?$b[0]:$b[2];
    if($va==$vb)return 0;
    return ($va>$vb)?1:-1; 
    }print_r( array_udiff($table,$arr,'comp'));echo '----------------------'."\n";print_r( array_udiff($arr,$table,'comp'));
    输出:Array
    (
        [0] => Array
            (
                [0] => id
                [1] => int(10)
            )    [1] => Array
            (
                [0] => usname
                [1] => varchar(20)
            )    [2] => Array
            (
                [0] => psw
                [1] => varchar(32)
            )    [4] => Array
            (
                [0] => tel
                [1] => varchar(20)
            )    [5] => Array
            (
                [0] => state
                [1] => int(10)
            )    [6] => Array
            (
                [0] => logtime
                [1] => datetime
            ))
    ----------------------
    Array
    (
        [1] => Array
            (
                [0] => 382
                [1] => xb
                [2] => sex
            )    [2] => Array
            (
                [0] => 383
                [1] => dz
                [2] => address
            )    [3] => Array
            (
                [0] => 384
                [1] => yx
                [2] => email
            ))