基础知识

PHP——HyperText Preprocessor(超文本预处理器,服务器脚本语言)

PHP语法结构:

  ①标准风格(XML风格):<?php  ?>

  ②短风格:<?  ?>  需配置php.ini:short_open_tag=On 并重启服务器

  ③ASP风格:<%  %>  需配置php.ini:asp_tags=On 并重启服务器

  ④长风格:<script language="php">  </script>

编码问题:

  <?php 

    header("content-type:text/html;charset=utf-8");  //header()写在任何输出之前

  ?>

PHP文档的组成:

  PHP代码、HTML、CSS、JS

PHP中的注释:

  单行注释://注释内容  #注释内容

  多行注释:/*注释内容*/

【变量】

  变量名称区分大小写

  //声明变量

  $a;

  $b;

  //声明变量并赋值

  $a=123;

  $b="autumn";

  $c=$d="abc123";

  //输出

  echo $a;

  echo $a,$b,$c;

  【系统预定义变量】

    $GLOBALS:系统全局作用域中的全部变量

    $_ENV:当前服务器的系统环境

    $_FILES:接收上传到服务器的文件

      $_FILES[上传框架的名称]['name']:上传的文件的名称

      $_FILES[上传框架的名称]['type']:上传的文件的MIME类型

      $_FILES[上传框架的名称]['tmp_name']:保存在服务器端的临时文件,我们在服务器端处理的都是这个临时文件

      $_FILES[上传框架的名称]['error']:上传文件的错误号

        0:没有错误,文件上传成功

        1:上传的文件超过了 php.ini 中 upload_max_filesize 限制

        2:上传的文件超过了HTML表单中 MAX_FILE_SIZE 的值

        3:文件只有部分被上传

        4:没有文件被上传

        6:找不到临时文件

        7:文件写入失败

        8:由于PHP扩展程序中断了文件上传

      $_FILES[上传框架的名称]['size']:上传的文件的大小

    $_SERVER:接收服务器的相关信息

      $_SERVER['HTTP_USER_AGENT']:返回当前客户端浏览器信息

      $_SERVER['HTTP_REFERER']:返回上级请求来源地址

      $_SERVER['SERVER_NAME']:服务器名称

      $_SERVER['SERVER_ADDR']:服务器的IP地址

      $_SERVER['REMOTE_ADDR']:客户端的IP地址

      $_SERVER['DOCUMENT_ROOT']:网页文件根目录(www根目录)

      $_SERVER['SCRIPT_FILENAME']:获取当前脚本文件名

      $_SERVER['QUERY_STRING']:获取所有的get参数字符串,通常情况下配合parse_str函数使用(parse_str将字符串解析成多个变量)

      $_SERVER['REQUEST_URI']:获取包括get参数在内的URL地址

      $_SERVER['REQUEST_TIME']:获取当前文件请求的时间戳

    $_GET:它可以获得以?形式传参的数据,http的get方式发送的数据

    $_POST:接收http的post方式发送的数据

    $_COOKIE:接收cookie数据

    $_REQUEST:可以接收$_GET/$_POST/$_COOKIE

    例:

      <h1>注册页面</h1>

      <form method="post" action="doAction.php">

        用户名:<input type="text" name="username" value="" /><br/>

        密码:<input type="password" name="password" value="" /><br/>

        <input type="submit" value="注册" />

      </form>

      -------------------------------------------------------------------------------------------

      echo "用户名为:".$_REQUEST['username'];

      echo "密码为:".$_REQUEST['password'];

【常量】

  在脚本执行期间一经定义不可改变

  常量名称一般为大写字符

  定义常量:

    define(常量的名称,常量的值);

    例:

      define("AUTUMN","this is my name");

      echo AUTUMN;

      注意:使用常量时直接使用常量名称,不用加引号

  【魔术常量】

    __LINE__:文件中的当前行号

    __FILE__:文件的完整路径和文件名

    __CLASS__:类的名称

    __METHOD__:类的方法名称

    __FUNCTION__:函数的名称

    PHP_EOL:对源代码换行,以适应不同系统平台

      Windows的换行为:\r\n;Unix、Linux中换行为:\n;MacOS中换行为:\r;

【数据类型】

  8种基本数据类型(标量类型、复合类型、特殊类型)、3种伪类型(mixed混合类型、number数字类型、callback回调类型)

  ①标量类型

    整型(int,integer):-21亿~21亿,无符号0~42亿,超出整型的存储会溢出

    浮点型(float/double):1.1、1.2、-1.0、2e3(2*103)、2E3(2*103)

    字符串型(string):字符串的值要写在定界符内(" "、' '、<<<(HereDoc))

      HereDoc:写大量文本时用

        <<<名称

          内容

        名称;

        例:

          $table=<<<tablename

            <table>

              <tr>

                <td></td>

                <td></td>

              </tr>

            </table>

          tablename;  //此处须顶行写,前面不可以有任何符号,包括空格也不可以有

          echo $table;

    布尔型(boolean):true、false、TRUE、FALSE

  ②复合类型

    数组(array):$arr=array(1,2,3,4);

    对象(object):$object=new stdClass();

  ③特殊类型

    资源(Resource):$handle=fopen("文件名","打开方式");

    空(null/NULL):1.未声明的变量;2.声明变量的同时并赋值为null(NULL)的;3.被unset()函数注销的变量;

【转义符】

  \n:换行

  \r:回车

  \$:$本身

  \':单引号本身

  \":双引号本身

  \\:反斜线本身

【单引号和双引号的区别】

  1.双引号可以解析变量,而单引号不能解析变量

    $username="Autumn";

    echo "我的名字是",$username;  =  echo "我的名字是$username";

    echo '我的名字是',$username;  ≠  echo '我的名字是$username';

  2.双引号支持所有转义符,而单引号只支持 \'、\\ 这两个转义符

  3.双引号当中的变量需要使用特殊字符隔开,特殊字符会被原样输出,{ } 除外

  4.双引号和单引号当中如果包含自己,其中的单引号或双引号需要转义

  5.双引号和单引号可以互相嵌套

  6.双引号当中包含单引号,而单引号中又包含变量,此时变量可解析,单引号原样输出

  7.变量及字符串的连接用 . 完成

  8.单引号效率高于双引号

【{ }花括号的作用】

  ①PHP引擎在解析变量的时候会尽可能多地去取合法字符,它认为取得的合法字符越多,这个变量的含义越明确

    $username="Autumn";

    echo "$username123";  //不输出,解析默认查找变量“username123”未定义

    echo "{$username}123";  //输出 Autumn123

  ②{ }能取出字符串中的指定字符,下标从0开始

    $string="autumn";

    $string{0}="A";

    echo $string;  //输出 Autumn

    echo $string{0};  //输出 A

    echo $string{1};  //输出 u

【运算符】

  ①算术运算符

    +  -  *  /  %  ++  --  

    ++:自增运算符

      $var=1;

      ++$var;  //前缀形式:先加减,后执行,加减的数值为1;

      $var++;  //后缀形式:先执行,后加减,加减的数值为1;

    --:自减运算符

    注意:数字支持自增、自减;字母只支持自增;布尔类型不支持自增、自减;NULL(空)只支持自增操作;

    例:

      $test="z";

      echo ++$test;  //aa

      $test="a1";

      echo ++$test;  //a2

      $test="a9";

      echo ++$test;  //b0

      $test="1a";

      echo ++$test;  //1b

      $test="1z";

      echo ++$test;  //2a

  ②字符串连接符

    .  .xxx.

    echo "<span style='color:rgb(255,255,255);'>X</span>";

    echo "<span style='color:rgb(".mt_rand(0,255).",".mt_rand(0,255).",".mt_rand(0,255).");'>X</span>";

  ③赋值运算符

    =

    +=  :$a+=2; -> $a=$a+2;

    -=  :$a-=2; -> $a=$a-2;

    *=  :$a*=2; -> $a=$a*2;

    /=  :$a/=2; -> $a=$a/2;

    %=  :$a%=2; -> $a=$a%2;

    .=  :$a.=2; -> $a=$a.2;

  ④比较运算符

    >  >=  <  <=

    ==:等于,判断左右两侧的表达式值是否相同,不用判断类型

    ===:全等于,既判断数值是否相等,又判断类型是否相同

    !=:不等于

    <>:不等于

    !==:不全等

  ⑤逻辑运算符

    and  &&:并且的意思,逻辑与

      短路:只要第一个表达式为假,就不用管第二个表达式的真假,根本执行不到第二个表达式就已经返回为假

      true && true  --> true

      true && false  --> false

      false && true  --> false 短路

      false && false  --> false 短路

      $a=1; $b=0;

      var_dump(--$a && ++$b);  --> false

      var_dump($a);  --> 0

      var_dump($b);  --> 0

    or  ||:或者的意思,逻辑或

      短路:当第一个表达式为真,即跳过第二个表达式的执行,直接返回结果为真

      true || true  --> true 短路

      true || false  --> true 短路

      false || true  --> true

      false || false  --> false

    not  !:取反的意思,逻辑非

      !true  --> false

      !false  --> true

    xor:逻辑异或

      true xor false  --> true

      false xor true  --> true

      true xor true  --> false

      false xor false  --> false

  ⑥三元运算符

    ? :

    (exp1)?(exp2):(exp3);

    如果表达式1为真,输出?后的表达式2的内容;如果表达式1为假,输出:后的表达式3的内容

    类似于:if...else...

      if(exp1){

        exp2;

      }else{

        exp3;

      }

  ⑦` ` 反引号:执行运算符

    需要配置PHP的配置文件中“safe_mode=off”,如果开启安全模式则反引号就没有作用了

    例:echo `ipconfig`;

  ⑧ @:错误抑制符

    写在表达式之前

  ⑨其他运算符

    数组  键名=>键值

    对象  对象->属性或方法

    instanceof  是否实例化一个类

【流程控制】

  ①

    if(exp)

      ......;  //只执行一条语句

  ②

    if(exp){

      表达式为真的代码段

    }

  ③

    if(exp){

      执行为真时的代码段

    }else{

      执行为假时的代码段

    }

  ④

    if(exp1){

      执行exp1为真时的代码段

    }elseif(exp2){

      执行exp2为真时的代码段

    }elseif(exp3){

      ...

    }

  ⑤

    switch (exp){

      case 值1:

        执行代码段;

        break;

      case 值2:

        执行代码段;

        break;

      ......

      default:

        执行代码段;

        break;

    }

【循环】

  ①

    for(exp1;exp2;exp3){

      执行循环体

    }

    for循环执行过程:

      exp1:无条件的赋初始值

      exp2:判断进入循环的条件,exp2如果为真,才能执行循环体,如果为假,进不了循环;

      exp3:执行完循环体之后对变量的操作,立刻又判断exp2,直到exp2为假时结束

    例:

      输出0~100之间的偶数

      for($i=0;$i<=100;$i+=2){

        echo $i,"<br/>";

      }

      输出0~100之间的奇数

      for($i=1;$i<=100;$i+=2){

        echo $i,"<br/>";

      }

      输出1~100之间的偶数

      for($i=1;$i<=100;$i++){

        if($i%2 == 0){

          echo $i,"<br/>";

        }

      }

      求1~100之间所有数字的和

      for($i=1;$i<=100;$i++){

        $sum+=$i;

      }

      echo $sum;

      输出5行20列的表格

      echo "<table width='500' border='1'>";

        for($i=1;$i<=5;$i++){

          echo "<tr>";

            for($j=1;$j<=20;$j++){

              echo "<td>X</td>";

            }

          echo "</tr>";

        }

      echo "</table>";

  ②

    do{

      执行循环体

    }while(exp);

    先执行一次循环体,接着判断表达式是否为真,如果为真,继续执行循环;

  ③

    while(exp){

      执行循环体

    }

    先判断exp是否为真,如果为真执行循环体;

 

  break:结束当次循环

  continue:跳过当次循环,进入下次循环,当次循环的结果不显示;

  for(exp1;exp2;exp3):

    执行循环体

  endfor;

  while(exp):

    执行循环体

  endwhile;

posted @ 2018-05-08 19:13  Autumn_n  阅读(163)  评论(0编辑  收藏  举报
TOP