PHP基础(三)

八、PHP日期和时间函数

  • 获取日期和时间
    在PHP中,要获取当前的日期和时间非常简单,只需使用date()函数即可。date()函数的语法格式如下:String date(string $format [,int $timestamp])
    返回按照指定格式显示的时间字符串。其中参数format为显示格式,而参数timestamp为时间戳。如果没有给出时间戳则使用本地当前时间。timestamp为可选参数,默认值为time()。其中format的选项很多,具体设置如表所示。


    <?php
    //设置PHP语言时区为Asia/Shanghai,这样读取的时间没有时间差
    date_default_timezone_set("Asia/Shanghai");  
    // 输出类似:Monday
    echo date("l") . "<br>";
    // 输出类似:Tuesday 22nd of January 2013 10:35:55 PM 
    echo date('l dS \of F Y h:i:s A'). "<br>";
    echo date('\i\t \i\s \t\h\e jS \d\a\y.'). "<br>"; 
    echo date("F j, Y, g:i a"). "<br>";                 
    echo date("m.d.y"). "<br>";                         
    echo date("j,n,Y"). "<br>";       
    echo date('h-i-s, j-m-y'). "<br>";   
    echo date('Y年m月d日'). "<br>";
    echo date("H:i:s"). "<br>";   
    //输出由年月日时分秒组合的字符串  
    echo date("YmdHis"). "<br>";        
    echo date("Y-m-d H:i:s"). "<br>";                  
    ?>


    在PHP语言中默认设置的是标准的格林威治时间(即采用的是零时区),该时间比系统时间少8个小时。所以要获取本地时间必须更改PHP语言中的时区设置,更改PHP时区设置的函数如下:date_default_timezone_set($timezone);
    参数timezone为PHP可识别的时区名称,在PHP手册中提供了各种时区[1]名称列表,其中,设置我国北京时间可以使用的时区包括:PRC(中华人民共和国)、Asia/Chongqing(重庆)、Asia/Shanghai (上海)或者Asia/Urumqi (乌鲁木齐),这几个时区名称是等效的。

  • 使用getdate函数获得日期信息
    getdate函数用于取得日期时间信息,语法格式如下:array getdate([int $timestamp])
    返回一个根据timestamp得出的包含有日期信息的结合数组。如果没有给出时间戳则认为是当前本地时间。返回的数组元素如表所示。

<?php
date_default_timezone_set("Asia/Shanghai");
$arr_date = getdate();
echo $arr_date[year]."-".$arr_date[mon]."-".$arr_date[mday]." ";
echo $arr_date[hours].":".$arr_date[minutes].":".$arr_date[seconds]." ".$arr_date[weekday];
echo "<br>";
echo "Today is the $arr_date[yday]th of year";
?>

  • 使用mktime函数取得一个日期的时间戳
    PHP使用mktime()函数将一个时间转换成Unix的时间戳值。时间戳是一个长整数,包含了从Unix纪元(january 1 1970 00:00:00 GMT)到给定时间的秒数。该函数的语法格式如下:
    int mktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )
    参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。参数说明如表所示。

    mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入。例如:

    <?php echo date("M-d-Y",mktime(0,0,0,12,36,2011))."<br>"; echo date("M-d-Y",mktime(0,0,0,14,1,2011))."<br>"; echo date("M-d-Y",mktime(0,0,0,1,1,2011))."<br>"; echo date("M-d-Y",mktime(0,0,0,1,1,13))."<br>"; ?>

  • 日期和时间的应用

    • 比较两个时间的大小
      在实际的开发中经常会对两个时间的大小进行判断,PHP中的时间是不可以直接进行比较的。所以需要将时间解析为时间戳的格式,然后再进行比较。在PHP中将时间解析为时间戳的函数是strtotime(),其语法格式为:int strtotime(string $time[,int $now])
      该函数有两个参数。如果参数time的格式是绝对时间,则now参数不起作用;如果参数time的格式是相对时间,那么其对应的时间就是参数now来提供的;如果没有提供参数now,对应的时间为当前时间。成功则返回时间戳,否则返回 False。
    • 实现倒计时功能
      利用strtotime()函数除了可以比较两个日期的大小,还可以精确地计算出两个日期的差值。例如:

      <?PHP $time1 = strtotime(date("Y-m-d H:i:s")); $time2 = strtotime("2013-5-1 17:10:00"); $time3 = strtotime("2013-10-1"); $sub1 = ceil(($time2 - $time1) / 3600); //1小时等于60 * 60$sub2 = ceil(($time3 - $time1) / 86400); //1天等于60 * 60 * 24秒 echo "离2013五一放假还有<font color=red> $sub1 </font>小时!!!" ; echo "<br>"; echo "离2013年国庆还有<font color=red>$sub2 </font>天!!!"; ?>
    • 计算页面脚本的运行时间
      要计算PHP程序的执行时间需要用到microtime()函数,该函数返回当前Unix时间戳和微秒数。返回格式为”msec sec”的字符串,中sec是自Unix纪元(january 1 1970 00:00:00 GMT)起到现在的秒数,msec是微秒部分。字符串的两部分都是以秒为单位返回的。函数语法格式如下:mixed microtime (void)

      <?PHP $pagestartime=microtime(); $time1 = strtotime(date("Y-m-d H:i:s")); $time2 = strtotime("2013-5-1 17:10:00"); $time3 = strtotime("2013-10-1"); $sub1 = ceil(($time2 - $time1) / 3600); //60 * 60 $sub2 = ceil(($time3 - $time1) / 86400); //60 * 60 * 24 echo "离2013五一放假还有<font color=red> $sub1 </font>小时!!!" ; echo "<br>"; echo "离2013年国庆还有<font color=red>$sub2 </font>天!!!<br>"; $pageendtime = microtime(); $starttime = explode(" ",$pagestartime); $endtime = explode(" ",$pageendtime); $totaltime = $endtime[0]-$starttime[0]+$endtime[1]-$starttime[1]; $timecost = sprintf("%s",$totaltime); echo "页面运行时间: $timecost 秒"; ?>

九、PHP函数

  • 内置函数
    PHP中有许多使用频率很高的内置函数,下面分别介绍这些函数。

    • echo函数
      该函数用于输出一个或者多个字符串,其语法格式如下:
      void echo ( string $arg1 [, string $... ] )
      严格来说echo()并不是一个函数,而是一个语言结构,因此不一定要使用小括号来指明数,单引号,双引号都可以。另外,如果你想给echo()传递多个参数,那么就不能使用小括号。以下为一个使用echo的例子代码。
    <?php
    //输出字符串,字符串放在双引号和单引号都可以
    echo "Hello World<br>";
    echo 'How do you do<br>';
    //可以在字符串中输出变量的值,但变量必须放在双引号字符串中
    $foo = "football";
    $bas = "basketball";
    echo "foo is $foo<br>";      // foo is football
    echo 'foo is $foo<br>';      // foo is $foo
    //也可以用字符串连接符“.”连接变量输出
    echo "bas is ".$bas."<br>";  // bas is basketball
    //可以用echo输出数组元素
    $baz = array("key" => "volleyball");
    echo "vol is {$baz['key']} !<br>"; // vol is volleyball !
    ?>
    • print函数
      另外一个常用的输出函数名为print,其语法格式:int print ( string $arg )
      严格来说print也不是一个函数,而是一个语法结构,因此输出的时候参数不需要括号。print语句的用法同echo类似.
    • include和require函数
      include函数在PHP网页设计中非常重要。它可以很好地实现代码的可重用性,同时还可以简化文件代码。include语句包含并运行指定文件,假如现在有文件a.php,在a.php中包含b.php文件,此时只需在a.php文件中使用“include ‘b.php’;”语句即可。当服务器执行a.php到这一行的时候,就会自动读取b.php文件中的代码并执行其中的代码。

      此方法非常有用,如在网页设计中,很多时候,大部分页头和页尾都是一样的。为了减少每个网页的代码重用,可以将页尾和页头分别做成header.php和footer.php页面。然后在页面中包含该页面,如下所示:

      <?php
      include 'header.php';
      //其他代码
      include 'footer.php';
      ?>

      另外在PHP编程时也经常将一些常用的访问数据库函数写到一个文件中,然后用include函数将这个文件导入即可。

      require()函数的用法和include()函数基本一样。这两种结构除了在如何处理失败之外完全一样。include()产生一个警告而require()则导致一个致命错误。换句话说,如果想在遇到丢失文件时停止处理页面就用require()。include()就不是这样,脚本会继续运行。

  • 定义函数

    • 定义和调用函数
      函数,就是将一些重复使用到的功能写在一个独立的代码块中,在需要时单独调用。创建函数的基本语法格式为:
      function fun_name($arg1,$arg2$argn){
      fun_body;
      }

    其中,function为声明自定义函数时必须使用到的关键字;fun_name为自定义函数的名称;arg1,arg2…argn为函数的参数;fun_body为自定义函数的主体,是功能实现部分。

    • 在函数间传递参数
      在调用函数时,需要向函数传递参数,被传入的参数称为实参,而函数定义的参数为形参。参数传递的方式有按值传递、按引用传递和默认参数3种。

       按值传递方式将实参的值复制到对应的形参中,在函数内部的操作针对形参进行,操作的结果不会影响到形参,即函数返回后,实参的值不会改变。

      <?php
      function fun( $m ){                  //定义一个函数
      $m = $m * 8 + 10;
      echo "在函数内:\$m = ".$m;       //输出形参的值
      }
      $m = 1;
      fun( $m ) ;                         //传值:将$m的值传递给形参$m
      echo "<br>在函数外:\$m = $m" ;     //实参的值没有发生变化,输出m=1
      ?>
      以上代码执行结果为:
      在函数内:$m = 18 在函数外:$m = 1

       按引用传递方式将实参的内存地址传递到形参中,在函数内部的所有操作都会影响到形参的值,即函数返回后,实参的值会发生变化。引用传递方式就是传值时在原基础上加上&号即可。

      <?php
      function fun( &$m ){                  //定义一个函数
      $m = $m * 8 + 10;
      echo "在函数内:\$m = ".$m;            //输出形参的值
      }
      $m = 1;
      fun( $m ) ;                           //传值:将$m的内存地址传递给形参$m
      echo "<br>在函数外:\$m = $m" ;    	//实参的值发生了变化,输出$m=18
      ?>
      以上代码执行结果为:
      在函数内:$m = 18 在函数外:$m = 18

       还有一种设置参数的方式,即默认参数(可选参数)。可以指定某个参数为可选参数,将可选参数放在参数列表末尾,并且指定其默认值。例如:

      <?php
      function fun($price,$tax="1"){
      $price=$price+($price*$tax);
      echo "价格:$price<br>";
      }
      fun(100,0.35);        //为可选参数赋值0.35
      fun(100);            //没有给可选参数赋值时使用默认参数
      ?>
      以上代码执行结果为:
      价格:135  价格:200
    • 从函数中返回值
      通常函数将返回值传递给调用者的方式是使用关键字return。return将函数的值返回给函数的调用者,即将程序控制权返回到调用者的作用域。如果在全局作用域内使用return关键字,那么将终止脚本的执行。例如:

      <?php 
      function fun($price,$tax=0.35){       //定义一个函数,函数中的一个参数有默认值
      $price=$price+($price*$tax);      //计算金额
      return $price;                   //返回金额
      }
      echo fun(100);                      //调用函数
      ?>
      以上代码执行结果为:135

      return只能返回一个值,不能一次返回多个。如果返回多个结果,就要在函数中定义一个数组,将返回值存储在数组中返回。

    • 对函数的引用
      引用不仅可以用于普通变量、普通参数,也可以作用于函数本身。对函数的引用,就是对函数返回结果的引用。例如:
      <?php
      function &fun($temp_str=0){        //定义一个函数,别忘了加“&”符
      return $temp_str;				//返回参数$temp_str
      }
      $str = &fun("函数引用");	    //声明一个函数的引用$str;
      echo $str."<br>";
      ?>
      以上代码执行结果为:函数引用

    在上面代码中,首先定义一个函数,这里需在函数名前加“&”符号,接着变量$str将引用该函数,最后输出该变量$str,实际上就是$temp_str的值。

    • 取消引用
      当不再需要引用时,可以取消引用。取消引用使用unset()函数,它只是断开了变量名和变量内容之间的绑定,而不是销毁变量内容。例如:
      <?php
      $str = "I like PHP";                   //声明一个字符串变量
      $math = &$str;                  //声明一个对变量$str的引用$math
      echo "\$math is:  ".$math."<br>";	//输出引用$math
      unset($math);						//取消引用$math
      echo "\$math is: ".$math."<br>";      //再次输出引用
      echo "\$str is:  ".$str;              //输出原变量
      ?>
  • 变量函数
    PHP 支持变量函数的概念。这意味着如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并且将尝试执行它。除了别的事情以外,这个可以被用于实现回调函数,函数表等等。变量函数不能用于语言结构,例如echo(),print(),unset(),isset(),empty(),include(),require()以及类似的语句。需要使用自己的外壳函数来将这些结构用作变量函数。 例如:

    <?php
    function comm() {           //定义comm函数
    echo "I like PHP<br>";
    }
    function like($name = "jack") {    //定义like函数
    echo $name." like PHP<br>";
    }
    function hate($name)           //定义hate函数
    {
    echo "$name hate PHP<br>";
    }
    $func = "comm";        //声明一个变量,将变量赋值为“comm”
    $func();           //使用变量函数来调用函数comm()
    $func = "like";        //重新给变量赋值
    $func("James");        //使用变量函数来调用函数like()
    $func = "hate";        //重新给变量赋值
    $func("John");     //使用变量函数来调用函数hate();
    ?>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值