100分求一段数组比较的写法

vgy12304 2010-01-28 04:42:13
数组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() //需要删除的字段名 做成一个数组
...全文
136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xj2002423 2010-01-29
  • 打赏
  • 举报
回复
学习了~~~
清风闲客 2010-01-29
  • 打赏
  • 举报
回复
接分
helloyou0 2010-01-28
  • 打赏
  • 举报
回复


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

)

张吉Jerry 2010-01-28
  • 打赏
  • 举报
回复
$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];
}
}
骄傲青蛙 2010-01-28
  • 打赏
  • 举报
回复
其实楼主的要求已经很明确了, 不过我现在不想动手做,

大至意思是:

遍历第二个数组, 里面作一个判断 : 条件是当值存在于第一个数组里时放进$addArr, 剩下没有的放进$delArr, 是这样吗?
iwantnet 2010-01-28
  • 打赏
  • 举报
回复
要把需求说一下吧,没明白
maninfire 2010-01-28
  • 打赏
  • 举报
回复
问题描述太模糊。是不是这样:
1)userlist是一个用户表,对应数组1?
2)数组2是用来接收数据,接收到的存入userlist?

你的需求是:
写一个算法,实现数组2存入userlist?
xuzuning 2010-01-28
  • 打赏
  • 举报
回复
请把你的需求说明白

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧