第七章:PHP数组
1:数组定义—— 数组array是一组有序的变量,其中每个变量被称为一个元素。每个元素由一个特殊的标识符来区分——称为键,也称为下标。数组中的每个实体都包含两项:键和值。
2:数组声明—— array array([mixed ...]); 参数mixed的语法为key=>value。多个参数用逗号分开。分别定义了索引和值。注意:索引可以是字符串也可以是数字!!如果省略了索引,则会自动产生从0开始的整数索引。
也可以不从0开始:$array=array("1"=>"编", "2"=>"程");
3:数组的类型—— 索引数组(indexed array) 和联合数组 (associative array)。前者使用数组作为键,后者使用字符串作为键。
关联数组——使用字符串索引或键 来访问储存在数组中的值(混合)
4:输出数组—— bool print_r (mixed expression)
5:数组的构造
1)一维数组——数组的元素是变量
2)二维数组——数组的元素是数组
$str = array("书籍"=> array("文学","历史","地理"),
"体育用品"=>array("m"=>"足球", "n"=> "篮球"));
6:数组的遍历
1)foreach
$arr = array('1'=>'http', '2'=>'www', '3'=>'google', '4'=>'com');
foreach ( $arr as $link ){
echo $link.'
';
}
在上面的代码中,php为$arr 的每一个元素依次执行循环体( each 语句)一次,将当前元素的值 赋值给$link。
2)使用list() 函数遍历数组—— 把数组中的值赋给一些变量。与array() 函数类似,这不是真正的函数,而是语言结构。list()函数仅能用于数字索引的数组,且数字索引从0开始。
语法: void list(mixed...) // 参数mixed 为被赋值的变量名称。
//输出用户登录信息
while( list ($name,$value) = each($_POST)){
if ($name != "submit") {
echo "$name=$value
";
}}
7:字符串与数组的转换
1)使用explode()函数将字符串转换成数组
2)使用implode()函数将数组转换成一个新字符串
8:统计数组元素个数:
int count ( mixed array [, int mode])
说明:array:输入的数组(必选)。 mode:可选。 COUNT_RECURSIVE(或1)。如选中此参数,本函数将递归的对数组计算。对计算多维数组的所有单元尤其有用。默认为0
$array = array('test1','test2','test3','test4');
echo count($array); // 统计数组元素个数,输出为4
9:查询数组中指定元素—— array_search() 函数: 在数组中搜索给定的值,找到后返回键名,否则返回false。
mixed array_search (mixed needle, array haystack [,bool strict])
参数needle指定在数组中搜索的值,参数haystack指定被搜索的数组,参数strict如果为true,还将在数组中检查给定值的类型。返回的是键名!
10:获取数组中最后一个元素—— array_pop() 获取并返回数组的最后一个单元,并将数组长度-1,如果数组为空(或非数组)则返回null
11:向数组中添加元素—— array_push() 函数将数组当成一个栈,将传入的变量压入该数组的末尾。返回数组新的单元总数。
12:删除数组中重复元素—— array_unique() 函数:将值作为字符串排序,然后对每个值只保留第一个键名,忽略所有后面的键名,即删除数组中重复的元素
第八章: PHP与WEB页面交互
1:PHP参数传递常用的方法有3种:$_POST[]、$_GET[]、 $_SESSION[],分别用于获取表单、URL和Session变量的值
1)$_POST[]全局变量—— $user = $_POST["user"] ($_GET[]、 $_SESSION[])
说明:可以直接写$user即可调用表单元素的值,需要将php.ini的register_globals= ON/OFF设置为ON,但是又安全隐患
2)对表单元素value属性进行赋值
$hidden = "value";
if ($_POST["submit"] == "登录"){.....}
3)获取复选框的值
入门类 案例类讲解类
if(($_POST[mrbook]!= null)){
echo "您选择的结果是:";
for($i = 0;$i
}
4)获取列表框的值—— 当
if($_POST[select] != "") //响应表单事件,返回多选列表框的值
echo "你选择的图书是:
";
for($i = 0; $i < count($_POST[select]); $i++)
echo $_POST[select][$i]."  ";
5)获取文件域的值(文件上传)—— => $_POST[file]
6)URL参数编码解码——urlencode、urldecode
第九章:PHP与Javascript交互
第十章:日期和时间
1:时区—— 整个地球分为24个时区,每个时区都有自己本地时间,同一时间,每个时区的本地时间相差1~23小时。在国际无线电通信领域,使用一个统一的时间,称为:通用协调时间(UTC, Universal Time Coordinated),UTC与格林威治时间(GMT,Greenwich Mean Time)相同,都与英国伦敦本地时间相同
PHP5 默认设置的是标准的格林威治时间(即采用的是零时区)。更改PHP语言中的时区设置有两种方法:
1)修改php.ini,找到[date]下的";date.timezone = "选项,将其修改为"date.timezone=Asia/Hong_Kong",重启Apache服务器
2)在应用程序中,在使用时间日期函数之前添加如下函数: date_default_timezone_set(timezone);参数timezone为时区名称。如我国为:PRC
2:PHP日期和时间函数
1)获取本地化时间戳—— mktime()函数:根据给出的参数返回UNIX时间戳。时间戳是一个长整数,包含了从UNIX纪元(1970年1月1日)到给定时间的秒数。其参数可以从右向左省略,省略的参数会被设置成本地日期和时间的当前值:
int mktime(int hour, int minute, int second, int month, int day, int year, int [is_dst])
注意:有效的时间戳范围是格林威治时间1901年12月31日20:45:54~2038年1月19日03:14:07(此范围符合32位有符号整数)。在windows系统中此范围限制为从1970年1月1日~2038年1月19日
echo "mktime 函数返回的时间戳:".mktime()."
" //返回当前的时间戳。如
echo "当前的日期为:".date("Y-m-d", mktime())."
" //使用date函数输出格式化后的日期
echo "当前的时间为:".date("H:i:s", mktime()); //使用date函数输出格式化后的时间
2)获取当前时间戳—— time() 函数:获取当前的UNIX时间戳,返回值从UNIX纪元(格林威治时间1970年1月1日00:00:00)到当前时间的秒数
$nextWeek = time() + (7*24*60*60) // 7 days,24 hours, 60 mins; 60 secs
echo 'Now: '.date('Y-m-d')'."
"; //输出当前日期
echo 'Next Week:'.date('Y-m-d', $nextWeek); //输出变量NextWeek的日期
3)获取当前日期和时间—— date() 函数: date(string format, int timestamp) //date()函数返回参数timestamp按照指定格式而产生的字符串。timestamp可选,省略,使用当前时间。
4)获取日期信息—— getdate() 函数: array getdate(int timestamp)
$arr = getdate();
echo "Date And Time is :".$datearr[year]."-".$datearr[mon]."-".$datearr[mday]." ".$datearr[hours].":".$datearr[minutes].":".$datearr[seconds]."
";
5)检验日期的有效性—— checkdate()函数: bool checkdate(int month, int day, int year)
6)输出格式化的日期和时间——date()函数的format参数控制
7)显示本地化的日期和时间—— setlocale()函数、strftime()函数
A:setlocale()函数——改变PHP默认的本地化环境: string setlocale(string category, string locale)
参数locale如果为空,就会使用系统环境变量的locale或lang的值。locale:en_US为美国本地化环境,chs:简体中文,cht:繁体中文
说明:如果是Windows平台用户,登录msdn来获取语言和国家(地区)的编码列表。如果是UNIX/Linux,则使用命令:locale-a
B:strftime()函数——根据本地化环境设置类输出日期和时间
string strftime(string format, int timestamp)—— 参数timestamp确定格式化后输出的字符串
setlocale(LC_ALL,"en_US");
echo "美国格式:".strftime("Today is %A"); // A表示星期的全称
setlocale(LC_ALL,"chs");
echo "中文简体格式:".strftime("今天是%A");
8)将日期和时间解析为UNIX时间戳—— int strtotime(string time [,int now])
该函数的time参数如果是绝对时间,则now不起作用。如果是相对时间,则其对应的时间就是参数now来提供的。
注意:解析失败返回false
strtotime()函数可将任何英文文本的日期和时间解析为UNIX时间戳,其值相对于now参数给出的时间,如果没有now则使用系统当前时间
3:日期和时间的应用
1)比较两个时间大小
![](http://img.e-com-net.com/image/info8/b8d97b5613f94ed2ba791cad57d0b2ed.gif)
![](http://img.e-com-net.com/image/info8/2f88dd3f1cd145f59c0e47b51acdbd4b.gif)
//Compare two times $time1 = date("Y-m-d H:i:s"); //Get current time $time2 = "2012-12-27 18:10:10"; echo $time1.""; echo $time2."
"; if(strtotime($time1) - strtotime($time2) < 0){ echo "\$time1 早于 \$time2"; }else{ echo "\$time2 早于 \$time1"; }
2)实现倒计时功能
![](http://img.e-com-net.com/image/info8/b8d97b5613f94ed2ba791cad57d0b2ed.gif)
![](http://img.e-com-net.com/image/info8/2f88dd3f1cd145f59c0e47b51acdbd4b.gif)
//实现倒计时功能 $time1 = strtotime(date("Y-m-d H:i:s")); $time2 = strtotime("2012-12-28 18:30:00"); $time3 = strtotime("2013-01-01"); $sub1 = ceil(($time2 - $time1) / 3600); $sub2 = ceil(($time3 - $time1) / 86400); // 60seconds * 60minutes * 24 hours echo "离周末还有$sub1小时"; echo "离元旦还有".$sub2."天";
3)计算页面脚本的运行时间—— 使用了 microtime() 函数,返回当前UNIX时间戳和微秒数。返回格式为 msec sec的字符串。其中sec是当前的UNIX时间戳,msec是微秒数
语法: string microtime(void)