把一维数组合并成二维数组

描述:$name数组是3个人的名字,$age数组的元素分别对应3个人的年龄,希望合并后的数组$user,它的每一个元素都是一条独立的个人信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php  
$name = array('andy','beer','candy');
$age = array(22,13,32);

$user = array();
foreach ($name as $k => $v) {
$temp = array('name'=>$v,'age'=>$age[$k]);
$user[] = $temp;
//$user['name'][] = $v;
//$user['age'][] = $age[$k];
}

var_dump($user);
/*
array (size=3)
0 =>
array (size=2)
'name' => string 'andy' (length=4)
'age' => int 22
1 =>
array (size=2)
'name' => string 'beer' (length=4)
'age' => int 13
2 =>
array (size=2)
'name' => string 'candy' (length=5)
'age' => int 32
*/
?>

表格数据上下行互换位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>表格数据上下行互换位置</title>
<script src="js/jquery-1.7.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
//上移
$("input.upbtn").each(function () {
$(this).click(function () {
var $tr = $(this).parents("tr");
if ($tr.index() != 0) {
$tr.prev().before($tr);
}
});
});
//下移
var trLength = $("input.downbtn").length;
$("input.downbtn").each(function () {
$(this).click(function () {
var $tr = $(this).parents("tr");
if ($tr.index() != trLength - 1) {
$tr.next().after($tr);
}
});
});
});

</script>
</head>
<body>
<table border="1" cellpadding=0 cellspacing=0>
<tr>
<td>6</td>
<td>xxxx66xxx</td>
<td>2013-5-26</td>
<td><input type="button" value="上移" class="upbtn" /><input type="button" value="下移" class="downbtn" /></td>
</tr>
<tr>
<td>7</td>
<td>xxxx77xxx</td>
<td>2013-5-27</td>
<td><input type="button" value="上移" class="upbtn" /><input type="button" value="下移" class="downbtn" /></td>
</tr>
<tr>
<td>8</td>
<td>xxx88xxxx</td>
<td>2013-5-28</td>
<td><input type="button" value="上移" class="upbtn" /><input type="button" value="下移" class="downbtn" /></td>
</tr>
</table>
</body>
</html>

利用keepalived构建高可用MySQL-HA

关于MySQL-HA,目前有多种解决方案,比如heartbeat、drbd、mmm、共享存储,但是它们各有优缺点。heartbeat、drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对于不会脚本语言的人来说,这无疑是一种脑裂问题;对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支;对于共享存储,个人觉得MySQL数据还是放在本地较为安全,存储设备毕竟存在单点隐患。使用MySQL双master+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。

下面,我把即将上线的一个生产环境中的架构与大家分享一下,看一下这个架构中,MySQL-HA是如何实现的,环境拓扑如下:
MySQL-VIP:192.168.1.200
MySQL-master1:192.168.1.201
MySQL-master2:192.168.1.202

OS版本:CentOS 5.4
MySQL版本:5.0.89
Keepalived版本:1.1.20

Read More

mysql分表的3种方法

一 先说一下为什么要分表

当一张表的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。

根据个人经验,mysql执行一个sql的过程如下:
1.接收到sql
2.把sql放到排队队列中
3.执行sql
4.返回执行结果

Read More

UEditor编辑器字符数统计和字符数限制问题

1.百度UEditor修改右下角统计字数默认只统计前台所见的文字个数,为了便于展示实际保存的时候是保存的包含html标签的,所以右下角的统计字数功能需要修改

1
2
3
4
5
6
7
8
9
10
11
getContentLength: function (ingoneHtml,tagNames) {  
var count= this.getContent(false,false,true).length;
// if (ingoneHtml) {
// tagNames = (tagNames ||[]).concat([ 'hr', 'img', 'iframe']);
// count =this.getContentTxt().replace(/[\t\r\n]+/g, '').length;
// for (var i = 0, ci; ci = tagNames[i++];) {
// count +=this.document.getElementsByTagName_r(ci).length;
// }
// }
returncount;
},

找到ueditor.all.js这个文件 找到7706行到7712行 注释掉就ok了

Read More