043 PHP基础语法

1  PHP基础语法

1.1  在 HTML 中嵌入 PHP 的4种方法:

1.1.1 XML 风格:

<?php ... ?>

1.1.2 简短风格:

<? ... ?>

1.1.3 SCRIPT 风格:

<script language = "php"> ... </script>

1.1.4 ASP 风格:

<% ... %>

注意: XML 风格与 SCRIPT 风格总是可用的。简短风格 和 ASP 风格需要在 php.ini 配置文件中打开或关闭,打开方法是将选项 shor_open_tag 或 asp_tag 选项赋值 on 。

1.2 PHP的 3 种注释方法

// 这是单行注释
# 这也是单行注释
 
 

/*

这是多行注释块 它横跨了 多行 */

注意 : 单行注释不可以出现  ?> ,否则会被PHP编译器识别为PHP程序的结束符;

1.3 PHP 的 8 种数据类型:

1.3.1 四种标量类型:

boolean (布尔型)
    integer (整型)
    float (浮点型, 也称作 double)
    string (字符串)

1.3.2  两种复合类型:

array (数组)    //array,元素由键值对组成,键也称索引,值的下标;
    object (对象)

1.3.3 两种特殊类型:

resource (资源)
    NULL (NULL)

相关:

  • var_dump() 可以查看表达式的值和类型;

  • gettype() 可以查看类型;

  • is_type() 可以判断类型;

  • PHP 中的类型强制转换,在要转换的变量之前加上用括号括起来的目标类型。

  • 单引号与双引号区别:

单引号表示字符串时,字符串被视为纯文字,双引号表示时,PHP会对字符串进行相应处理;所以,定义简单字符串时使用单引号,避免php花时间解析变量;

1.5  变量

1.5.1 基础:

  1. 变量区分大小写;

  2. 变量不能与数字、空格、. 开头命名,可以有汉字;

  3. $this 是一个特殊的变量,它不能被赋值。

  4. 可变变量,$a=’aa’;$$a=”bb”;则 $aa=”bb”;

  5. 传值赋值,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。

  6. 引用赋值,$a=”aa”; $b=&$a; 则改变$a的值,$b也变化。不同:存储结构是分开的,即使unset($a),$b还在(区分C语言)

  7. 变量类型:int str array bool object float resource null;

1.5.2  预定义变量:

$_SESSION,  $_COOKIE,  $_POST,  $_GET,  $_REQUEST, $_FILES,$_EVN ....

1.5.3  PHP 三种不同变量的作用域:

1  local(局部)

函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。

2  global(全局)

函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。

3  static(静态)

静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。
全局变量本身就是静态存储方式,所有的全局变量都是静态变量;

1.6 常量

1.6.1 定义常量:

define("NAME",$value,[TRUE]);  //如果第三个参数为true,则不区分大小写,默认是区分大小写的

可以简单的通过指定其名字来取得常量的值,也可以用函数 constant() 来获取常量的值;用 get_defined_constants() 可以获得所有已定义的常量列表。

1.6.2 魔术常量:

__LINE__             //文件中的当前行号。
       __FILE__                   //文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
       __DIR__                   //文件所在的目录。等价于 dirname(__FILE__)。
      __FUNCTION__       //返回该函数被定义时的名字(区分大小写)。
      __CLASS__              //返回该类被定义时的名字(区分大小写)。
      __TRAIT__              //返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域。
      __METHOD__        //返回该方法被定义时的名字(区分大小写)。
      __NAMESPACE__  //当前命名空间的名称(区分大小写)。

1.7  运算符

  • 算数运算符:+ – * / % ++ –;

  • 连接运算符: .  ;

  • 赋值运算符: =, +=,-=,*=,/=,%=,.=;

  • 比较运算符:>,<,==,===,!= <>,!==;

  • 逻辑运算符: and,&& ; or,|| ; not,! ; xor(逻辑异或,两边不同返回TRUE,相同返回FALSE);

  • 位运算符 : & ;|;^(异或,不同返回1);~(非运算符,1.0取反);<<左移,右边空出的补0;>>右移左边空出的补0

1.8 流程控制

1.8.1  if语句

if ($a > $b) {
        echo "a is greater than b";
    }

1.8.2  if…else语句

if ($a > $b) {
        echo "a is greater than b";
    } else {
        echo "a is NOT greater than b";
    }

1.8.3 if…elseif….else语句

<?php
    if ($a > $b) {
        echo "a is bigger than b";
    } elseif ($a == $b) {
        echo "a is equal to b";
    } else {
        echo "a is smaller than b";
    }
    ?>

相关:流程控制的替代语法 ¶

<?php
    if ($a == 5):
        echo "a equals 5";
        echo "...";
    elseif ($a == 6):
        echo "a equals 6";
        echo "!!!";
    else:
        echo "a is neither 5 nor 6";
    endif;
   ?>

1.8.4 switch 语句

类似于具有同一个表达式的一系列 if 语句。下面使用两种不同方法实现同样的事,一个用一系列的 if 和 elseif 语句,另一个用 switch 语句:

<?php
    if ($i == 0) {
        echo "i equals 0";
    } elseif ($i == 1) {
        echo "i equals 1";
    } elseif ($i == 2) {
        echo "i equals 2";
    }

    switch ($i) {
        case 0:
            echo "i equals 0";
            break;
        case 1:
            echo "i equals 1";
            break;
        case 2:
            echo "i equals 2";
            break;
        }
    ?>

1.8.5  while 循环

$i = 1;
    while ($i <= 10):
        print $i;
        $i++;
    endwhile;

1.8.6 do…while循环

$i = 0;
    do {
        echo $i;
    } while ($i > 0);

注意 : while循环和do…while循环除了判断条件的位置不同外,还有一个区别就是do…while循环要在语句的尾部加上分号(;);

1.8.7 for循环语句

$people = Array(
        Array('name' => 'Kalle', 'salt' => 856412), 
        Array('name' => 'Pierre', 'salt' => 215863)
    );

    for($i = 0; $i < count($people); ++$i)
    {
         $people[$i]['salt'] = rand(000000, 999999);
    }

以上代码可能执行很慢,因为每次循环时都要计算一遍数组的长度。由于数组的长度始终不变,可以用一个中间变量来储存数组长度以优化而不是不停调用 count():

$people = Array(
        Array('name' => 'Kalle', 'salt' => 856412), 
        Array('name' => 'Pierre', 'salt' => 215863)
    );

    for($i = 0, $size = count($people); $i < $size; ++$i)
    {
         $people[$i]['salt'] = rand(000000, 999999);
    }

1.8.8 foreach 循环语句

oreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,

有两种语法:

foreach (array_expression as $value)
    statement
    /* 将数组中的值遍历赋于$value */
    foreach (array_expression as $key => $value)
    statement
    /* 将数组的键遍历赋于$key,将数组的值遍历赋予$value */

1.8.9  include 和 require

include()    每次执行文件都要进行读取,如果文件不存在,会给出一个 warning,但脚本会继续执行

require()    文件只处理一次,这就意味着如果可能执行多次的代码,则使用require()效率比较高

include_once()    与 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。

require_once()    与 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。

理解:require 相当于文件内容替换require()语句,只加载一次以后都在那里,当是不能重复加载;否则报错停止代码运行;include相当于运行一次脚本就加载一次文本内容,加载之后又需要重新加载,所以理论上require的效率更高,由此特性可区分报错级别与运用域;

1.8.10 其它语句:

  • continue  跳过当前循环,循环还在继续

  • break       跳出当前循环,循环终止;

  • exit          终止当前脚本,这行代码后边的代码不执行;

  • return      立即结束此函数的执行并将它的参数作为函数的值返回。

  • goto        操作符可以用来跳转到程序中的另一位置。通常的用法是用 goto 代替多层的 break

  • declare

1.9  编码规范:

  • 类命名,使用驼峰法,即首字母大写,不使用空格和“_”;

  • 常量命名,字母全部大写,多单词使用”_”隔开;

  • 静态变量命名,使用小写的s_开头;

  • 局部变量命名, 变量使用’_’开头;

  • 全局变量命名,应该带前缀’g’;

  • session变量,所有字母使用大写,使用’S_’开头,多个单词间使用’_’间隔;

  • 变量命名,字母全部小写,多单词使用”_”隔开;

  • 数组命名,一般都是复数,即单词后添加 “s;

  • 方法或函数命名,首字母小写,除第一个单词外,其他单词首字母大写;

  • 类文件命名,后缀是.class.php;

  • 数据库表名命名,表名均使用小写字母,普通数据表,使用_t结尾,视图,使用_v结尾,多个单词组成的表名,使用_间隔;

  • 数据库字段命名,全部使用小写,多个单词间使用_间隔;

  • 大括号{ }书写规则:

a.{直接跟在控制语句之后,不换行
    for ($i=0;$i<$count;$i++) {
        echo "test";
     }

    b.{在控制语句下一行
    for($i=0;$i<$count;$i++)
    {
        echo "test";
    }
  • 小括号( )和函数、关键词等

a. 不要把小括号和关键词紧贴在一起,要用一个空格间隔;如if ( $a<$b );
    b. 小括号和函数名间没有空格;如$test = date("ymdhis");
    c. 除非必要,不要在Return返回语句中使用小括号。 如Return $a;
  • =符号书写

a. 在=符号的两侧,均需留出一个空格;如$a = $b 、if ($a = = $b)等;
    b. 在一个申明块,或者实现同样功能的一个块中,要求=号尽量上下对其,左边可以为了保持对齐使用多个空格,而右边要求空一个空格;

猜你喜欢

转载自blog.csdn.net/phpstory/article/details/80383918