6
25
2009
0

[PHP]使用array_merge重新排列数组下标

用了一个array_unique去除了一个数组里面的重复,但是发现下标保留了原数组的下标

但是javascript使用for循环需要下标整齐,所以寻找重新排列数组下标的方法

array_merge可以解决这个问题

 

array_merge() 函数把两个或多个数组合并为一个数组。

如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。

注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。(参见例子 2)

语法

array_merge(array1,array2,array3...)
参数 描述
array1 必需。输入的第一个数组。
array2 必需。输入的第二个数组。
array3 可选。可指定的多个输入数组。

例子 1

<?php
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2));
?>

输出:

Array ( [a] => Horse [b] => Cat [c] => Cow )

例子 2

仅使用一个数组参数:

<?php
$a=array(3=>"Horse",4=>"Dog");
print_r(array_merge($a));
?>

输出:

Array ( [0] => Horse [1] => Dog )
Category: PHP | Tags: php 数组 下标重新排列
9
5
2008
2

[MYSQL][PHP]Order By的教训

今天师父写了一个脚本,是通过条件判断将会员表所有会员的level字段按等级分配.

写好语句以后 一执行 提示内存不足   于是换成for循环来分段执行   通过 limit 每次循环执行200条

执行完毕以后,发现有大约10分之一的会员没有被分配 想尽办法找这个问题的bug 最后发现问题出在sql语句上

是没有加order by 导致的 只有limit 不能保证每次执行的数据为新数据  可能出现重复

至于具体原因  我是没力气想了  就快3点了

Category: MYSQL | Tags: mysql php
8
5
2008
0

[HTML][PHP][转]多文件上传

 

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>上传一组文件</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data">
<p>同时上传多个文件:<br />
<input type="file" name="userfile[]" /><br />
<input type="file" name="userfile[]" /><br />
<input type="file" name="userfile[]" /><br />
<input type="submit" value="上传" />
</p>
</form>
</body>
</html>
 

 

<?php
$root_dir=str_replace("\\", '/', dirname(__FILE__));
//$root_dz=str_replace("\\", '/', substr(dirname(__FILE__), 0, -8));
//如本文件不在站点根目录可用上行替换第一行,根据情况修改后面的数字8即可.
//例如本文件在“/home/web/include”文件夹中,而站点根目录是“/home/web”,数字8表示“/include”有8个字符.
$uploaddir = $root_dir."/";//设置上传目录
$f_type=strtolower("jpg,jpeg,gif,png,swf,bmp,txt,rar,zip,doc");//设置可上传的文件类型
$file_size_max=100*1024;//限制单个文件上传最大容量
$overwrite = 1;//是否允许覆盖相同文件,1:允许,0:不允许
$f_input="userfile";//设置上传域名称

if($_FILES[$f_input]){
    foreach($_FILES[$f_input]["error"] as $key => $error){
        $up_error="no";
        if ($error == UPLOAD_ERR_OK){
            $f_name=$_FILES[$f_input]['name'][$key];//获取上传源文件名
            $uploadfile=$uploaddir.strtolower(basename($f_name));
             
            $tmp_type=substr(strrchr($f_name,"."),1);//获取文件扩展名
            if(!strstr($f_type,$tmp_type)){
                echo "对不起,不能上传".$tmp_type."格式文件, ".$f_name." 文件上传失败!<br />";
                $up_error="yes";
            }
             
            if ($_FILES[$f_input]['size'][$key]>$file_size_max) {
                echo "对不起,你上传的文件 ".$f_name." 容量为".round($_FILES[$f_input]['size'][$key]/1024)."Kb,大于规定的".($file_size_max/1024)."Kb,上传失败!<br />";
                $up_error="yes";
            }
             
            if (file_exists($uploadfile)&&!$overwrite){
                echo "对不起,文件 ".$f_name." 已经存在,上传失败!<br />";
                $up_error="yes";
            }
             
            //取消下两行的注释可用日期和时间自定义文件名
            //if(function_exists('date_default_timezone_set')){date_default_timezone_set('PRC');}//设置时区
            //$uploadfile=$uploaddir.date("YmdHis").$key.".".$tmp_type;
            if(($up_error!="yes") and (move_uploaded_file($_FILES[$f_input]['tmp_name'][$key], $uploadfile))){
                echo "文件 ".$f_name." 上传成功!<br />";
            }
        }
    }
}
?>
Category: PHP | Tags: html php 文件上传
8
1
2008
0

[转][PHP]一个比is_numeric更适合id判断的方法

is_numeric能判定一个变量是否为数字或数字字符串,但是它的判定范围太宽了。整数、小数、指数表示以及16进制数值都会通过判断。
平时判定id的时候,用它就有点不合适。今天发现一个新的判定函数:ctype_digit,它可以只判定整数,这样就比is_numeric好一些。

其他还有ctype_xdigit判定16进制整数,ctype_alpha判定字母等等函数。
参考PHP的ctype函数库

转至:桄欣  发表于2008年07月 23日 Wednesday 19:01 在 编辑部

Category: PHP | Tags: php
8
1
2008
2

[Ajax]Ajax readyState的几种状态

0: (Uninitialized) the send( ) method has not yet been invoked.
1: (Loading) the send( ) method has been invoked, request in progress.
2: (Loaded) the send( ) method has completed, entire response received.
3: (Interactive) the response is being parsed.
4: (Completed) the response has been parsed, is ready for harvesting.

0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

 

readyState Status Code

Status of the XMLHttpRequest Object

(0) UNINITIALIZED
未初始化

The object has been created but not initialized. (The open method has not been called.)
(XMLHttpRequest)对象已经创建,但尚未初始化(还没有调用open方法)。

(1) LOADING
载入

The object has been created, but the send method has not been called.
(XMLHttpRequest)对象已经创建,但尚未调用send方法。

(2) LOADED
载入完成

The send method has been called, but the status and headers are not yet available.
已经调用send方法,(HTTP响应)状态及头部还不可用。

(3) INTERACTIVE
交互

Some data has been received. Calling the responseBody and responseText properties at this state to obtain partial results will return an error, because status and response headers are not fully available.
已经接收部分数据。但若在此时调用responseBody和responseText属性获取部分结果将会产生错误,因为状态和响应头部还不完全可用。

(4) COMPLETED
完成

All the data has been received, and the complete data is available in the responseBody and responseText properties.
已经接收到了全部数据,并且在responseBody和responseText属性中可以提取到完整的数据。

 

比如在点完保存以后显示正在保存的状态时应该判断readyState == 2的时候,执行显示的状态

Category: JavaScript | Tags: php ajax
8
1
2008
1

[PHP]Ajax使用POST传值要注意的一个小问题

昨天在一个保存按钮的地方用到了Ajax

使用POST传值,在提交的时候执行页面怎么也接受不到传的值,用get却没有问题

最后发现问题出在setRequestHeader('Content-Type','utf-8');

必须设置成setRequestHeader('Content-Type','application/x-www-form-urlencoded');

这样才能接受到post的值

Category: PHP | Tags: ajax php
7
23
2008
0

[PHP]格式化html代码方法htmlentities和htmlspecialchars

用户编辑上传的文字往往会包含<>""&这样的代码,如果不在后台加以处理,往往会导致不少安全问题

php自带了htmlentities和htmlspecialchars这两个方法

htmlentities 可以把用户输入的所有文字全部格式化

string htmlentities ( string string [, int quote_style [, string charset]] )


第一个参数是要格式化的字符串

第二个参数有三种情况

ENT_COMPAT Will convert double-quotes and leave single-quotes alone.
ENT_QUOTES Will convert both double and single quotes.
ENT_NOQUOTES Will leave both double and single quotes unconverted.

     第一种会转换双引号不转换单引号
     第二种会同时转换单引号和双引号
     第三种会不转换单引号和双引号

第三个参数是设置编码格式

字符集 别名 描述
ISO-8859-1 ISO8859-1 西欧,Latin-1
ISO-8859-15 ISO8859-15 西欧,Latin-9。增加了 Latin-1(ISO-8859-1)中缺少的欧元符号、法国及芬兰字母。
UTF-8   ASCII 兼容多字节 8-bit Unicode。
cp866 ibm866, 866 DOS-特有的 Cyrillic 字母字符集。PHP 4.3.2 开始支持该字符集。
cp1251 Windows-1251, win-1251, 1251 Windows-特有的 Cyrillic 字母字符集。PHP 4.3.2 开始支持该字符集。
cp1252 Windows-1252, 1252 Windows 对于西欧特有的字符集。
KOI8-R koi8-ru, koi8r 俄文。PHP 4.3.2 开始支持该字符集。
BIG5 950 繁体中文,主要用于中国台湾。
GB2312 936 简体中文,国际标准字符集。
BIG5-HKSCS   繁体中文,Big5 的延伸,主要用于香港。
Shift_JIS SJIS, 932 日文。
EUC-JP EUCJP 日文。

 

下面是htmlspecialchars

string htmlspecialchars ( string string [, int quote_style [, string charset]] )
 

它的三个参数和htmlentities是一样的

它和htmlentities的区别就在于:

  • '&' (ampersand) becomes '&amp;'

  • '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.

  • ''' (single quote) becomes '&#039;' only when ENT_QUOTES is set.

  • '<' (less than) becomes '&lt;'

  • '>' (greater than) becomes '&gt;'

可以了解到htmlspecialchars只转化上面这几个html代码,而htmlentities却会转化所有的html代码,连同里面的它无法识别的中文字符也会转化出来。

Category: PHP | Tags: php 格式化html

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com