php基础学习笔记(12)

php基本语法

<?php
    //这个是php单行注释
    /*
        这是多行注释
    */
    //每条php语句使用英文分号结束——必须使用!
    //php是一门区分大小写的语言——但函数名除外
    //php的任何一个变量名都要使用一个$符开头。
?>

变量和常量

php中,变量使用一个$符号开头。变量通常是直接赋值(此时如果是第一次赋值也就表示定义)。

常量:设定一个其值不会也不应该改变的数据标识符(数据名字),比如数学上的“pi”。

$pi = 3.14;        //这是变量

define(“PI”, 3.14);    //这是定义一个常量,名字为“PI”,值为3.14,这里也就类似赋值

常量定义的同时也就是赋值,且只是这一次性的!

常量和变量的区别:

  • 常量前面没有美元符号($)
  • 常量只能用 define() 函数定义,而不能通过赋值语句赋值
  • 常量可以不用理会变量范围的规则而在任何地方定义和访问
  • 常量一旦定义就不能被重新定义或者取消定义
  • 常量的值只能是标量(即整数,浮点数,字符串,布尔)

数据类型:

         基本类型(标量类型):

                   布尔类型(bool,boolean): 只有两个数据:true  false

                   字符类型(string):可以是单引号,也可以是双引号,还可以是“定界符”格式

                   整数类型(int,integer):

                            $v1 = 10;

                            $v2 = 012;                  //以0开始的数字表示“8进制”整数,这里相当于10进制的10

                            $v3 = 0x1F;                //以0x开始的数字表示16进制整数,这里相当于10进制的31

                   浮点类型(float,double)

                            $v4 = 12.34;

                            $v5 = 12.34e5;                   //12.34乘以10的5次方

         复合类型:

                   数组类型:

                   对象类型:

         特殊类型:

                   资源类型:表示某种“外界数据”的类型。

                   空类型(null):只有一个数据,就是“null”

 

3种字符串类型的区别:

$str1 = "abc\ndefg1";    //双引号字符串中可以识别以下转义字符:\"  \n  \r  \t  \\  \$
$str2 = a\bc\ndefg2\\;        //单引号字符串中只能识别以下转义字符:\‘  \\。其中"\\"通常只用于最后一个字符
//下述为定界符字符串,其中的“ABCD”是随意命名的一个符号。字符串也就使用该符号结尾。
//定界符字符串中可以识别以下转义字符:\n  \r  \t  \\  \$
$str3 = <<<ABCD
abc\nde"f‘g3
这叫做定界符字符串
这个范围的任何内容都是属于str3这个字符串的内容
换行也可以直接换
还可以写html和js等等。。。比如:
<hr />
<script>
    alert("dddd");
</script>
ABCD;
//特别注意:上述一行定界符字符串的结束符只能出现该名字本身和一个分号,不能有任何其他内容,比如空格,缩进(tab符)

//注意:在双引号字符串和定界符字符串中,可以直接识别变量并用该该变量的值来填充其内容。
//如果想要不被识别,则需要使用"\$"来将该$符号进行转义
    $i = 5;
    echo "$i=" . $i ;

传值方式:

         值传递(赋值传值):将一个变量的值拷贝一份,然后赋值给另一个变量,此时两个变量的值相等(相同),但两个变量是完全独立的没有关联的变量。

                   默认情况下,在php中,简单数据类型和数组以及空类型使用值传递。

         引用传递(引用传值):将一个变量多代表的“地址”复制一份然后赋值给另一个变量,也就是相当于两个变量同时指向(对应)一个相同的地址——此地址也就代表数据的位置。此时两个变量值相等的同时,也表示这两个变量其实指代的是一份共同的数据。

                   默认情况下,在php中,对象类型以及资源类型使用引用传递。

不过:

         我们也可以人为将默认使用赋值传递的数据来使用引用传值。语法是:

         变量1  =  &变量2;

         举例:

                   $v1 = 10;

                   $v2 = &$v1;      //$v1和$v2此时代表“一个数据内容”

                   $v1++;

                   echo $v2;

对比js:

         js中,只有默认传值方式,没有人为设定方式

         js中:默认值传递的类型有:数字,字符,布尔,两个特殊类型

                     默认引用传值的类型有:数组, 对象

运算符:

l  算术运算符: +   -   *   /  %  ++   --

  • +号只做“算术运算”,没有双重含义。
  • ++  --符号含义和用法完全同js。

l  写在变量前,则:先自加(自减),再做其他运算(比如赋值)

l  写在变量后,则:先做其他运算(比如赋值),再自加(自减)

  • %号只对整数进行取与运算,如果不是整数,会先自动转为整数再取余

l  比较运算符:==   !=    >   >=   <   <=   ===(全等于)    !==(不全等于)

  • ==通常表示“模糊相等”,===表示精确相等(只有数据类型和数据值都一样才等)
  • 模糊相等的各种情况请查手册:附录〉类型比较表

l  条件运算符:(expr1) ? (expr2) : (expr3),例:

  • 含义:对表达式exp1进行求值判断,判断结果如果是true,则整个表达式的结果就是exp2,否则整个表达式的结果是exp3
  • $v1 = $fs>60  ?  "及格"  :  "补考" ;  //则v1根据fs的值有两个情况
  • 补充知识:一元运算符有:!, ++,  --,  ~,, 二元运算符就是我们用得最多的运算符,三元运算符就这一个。

l  逻辑运算符:&&(与)    ||(或)    ! (非)

  • 逻辑与&&: 只两个数据都是true的时候,结果才是true
  • 逻辑或||: 只要有一个数据是true的时候,结果就是true
  • 逻辑非!: 取逻辑数据的相反值。

l  字符串运算符:. (即英文句号)       .=(即类似“+=”)  

  • .=只是一个“简写法”而已,$v1 = $v1 . “abc”;     è $v1 .= “abc”;

l  位运算符:&(与)    |(或)    ~(非)    ^(异或)    <<(左移)    >>(右移)

  • 位运算符都是针对数字的二进制来进行的。
  • 按位与&:只有两个对应位上的数字都是1的时候结果才是1
  • 按位或|:只要有一个对应位上的数字是1,结果就是1
  • 按位非~:取反,即1变成0,0变成1
  • 按位异或^:两个对应位上的数字不同的时候结果就是1

l  赋值运算符: =   +=   -=   *=    /=    %=   .=

 

运算符的优先级问题:基本同js。

 

数据类型转换

在js中,基本没有数据类型转换的概念,实际的转换都是“自动发生”的——默认转换。

         js中有两个“类似”类型转换的函数: parseInt(….)  parseFloat(…)

php中,既有默认转换,也有强制转换。

默认转换举例:

$v1 = 10 - “3”;        //7;
    $v2 = 10 + “3”;        //13;
    $v3 = 10 + “3abc”;    //13;
    $v4 = 10 + “3.5abc”;    //13.5;
    $v5 = 10 + “abc3”;    //10;
    $v5 = 10 + “abc”;    //10
    $v5 = “10” + “abc”;    //10
    $v5 = “10ABC” + “5abc”;    //15
    $v5 = “ABC10” + “abc5”;    //0
    $v5 = “ABC” + “abc”;    //0

………………….凡是使用算术运算符进行运算,都会“看成”数字,如果实在转不成一个数字,也会当做0来进行计算。

强制转换

语法: (要转成的目标类型)数据;
    举例:
    $v1 = (int) “3.5abc”;    //3;int类型
    $v1 = (float) “3.5abc”;    //3.5;    //这里其实是float类型
    $v1 = (string) 3;        //”3”;
    $v1 = (bool) “3.5”;        //true

——特别推荐将一个数据转换为bool类型的时候:查手册:附录〉类型比较表〉对变量 $x 进行比较 〉 if($x)列

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。