PHP从入门到精通——读书笔记(第7—10章:数组、与Web交互、日期时间等)

第七章: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.'<br>';
}
在上面的代码中,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<br>";
}}

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";
<input type="hidden" name="ID" value="<?php echo $hidden; ?>"

<input name="submit"  ..../>
if ($_POST["submit"] == "登录"){.....}

3)获取复选框的值

<input type="checkbox" name="mrbook[]" value="入门类">入门类<input type="checkbox" name="mrbook[]" value="案例类"> 案例类<input type="checkbox" name="mrbook[]" value="讲解类">讲解类

if(($_POST[mrbook]!= null)){
    echo "您选择的结果是:";
    for($i = 0;$i<count($_POST[mrbook]);$i++)
    echo $_POST[mrbook][$i]."&nbsp;&nbsp;"; //循环输出用户选择的图书类别
}

4)获取列表框的值—— 当<select>标记设置了 multiple 属性,则为菜单列表框,可以选择多个条件
<input type ="checkbox" name = "checkbox[]" multiple>

<select name="select[]" size="5" multiple>
<option value="PHP数据库系统开发完全手册">PHP数据库系统开发完全手册</option><option value="PHP编程宝典">PHP编程宝典</option></select>

if($_POST[select] != "") //响应表单事件,返回多选列表框的值
  echo "你选择的图书是:<br>";
  for($i = 0; $i < count($_POST[select]); $i++)
    echo $_POST[select][$i]."&nbsp;&nbsp";

5)获取文件域的值(文件上传)—— <input type="file" name="file" size="15" > => $_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()."<p>" //返回当前的时间戳。如
echo "当前的日期为:".date("Y-m-d", mktime())."<p>"  //使用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')'."<p>";   //输出当前日期
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]."<p>";

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)比较两个时间大小

View Code
//Compare two times
$time1 = date("Y-m-d H:i:s"); //Get current time
$time2 = "2012-12-27 18:10:10"; 
echo $time1."<p>";
echo $time2."<p>";
if(strtotime($time1) - strtotime($time2) < 0){
    echo "\$time1 早于 \$time2";
}else{
    echo "\$time2 早于 \$time1";
}

2)实现倒计时功能

View Code
//实现倒计时功能
$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 "离周末还有<font color=red>$sub1</font>小时<p>";

echo "离元旦还有".$sub2."天";

3)计算页面脚本的运行时间—— 使用了 microtime() 函数,返回当前UNIX时间戳和微秒数。返回格式为 msec sec的字符串。其中sec是当前的UNIX时间戳,msec是微秒数
语法: string microtime(void)

原文地址:https://www.cnblogs.com/mumue/p/2831468.html