PHP学习笔记--第二章:语法基础

第二章:语法基础
一、语法基础
1.数据类型
       1)类型转换
       方法一:       //不改变原操作数的类型
              (int)$x;   //(integer)$x;
              (real)$x; // (double)$x;         (float)$x;
              (string)$x;
              (array)$x;
              (object)$x;
       方法二:       //不改变原操作数的类型
              Doubleval($x);       //将参数视为双精度数
              Intval($x);             //将参数视为整型数
              Strval($x):             //将参数视为字符串型
       方法三:       //改变原操作数的类型
              $x=1.5;
              settype($x,”integer”);     //$x=1
              参数值:integer    double     string      array       object
       2).取得操作数类型
       方法一:
              $x=1;
              gettype($x);    //integer
       方法二:
              is_long    is_double        is_string         is_array   is_object
             
2.字符串
1).转义字符
              n                 换行符
              r                  回车
              r                  横表
                                反斜线
              $                 货币符号
              “                  双引号
       2).使用ASCCII
       ACSII码相关函数

 

 

函数
说明
chr(n)
返回ASCII码为n的字符
dechex(n)
返回等于给定十进制值n的十六进制值
decoct(n)
返回等于给定十进制n的八进制值
hexdec(n)
返回等于给定十六进制值n的十进制值
octdec(n)
返回等于给定八进制值n的十进制值
ord(c)
返回字符cASCII

 

 

       例:打印ASCII码为32-127的字符的十进制、八进制、和十六进制值
              for($i=32;$i<128;$i++)
              {
                     $c=chr($i);
                     $octal=decoct($i);
                     $hex=dechex($i);
                     echo =”
$i(octal $octal,hex $hex):$c”;
              }
       3).单引号字符串
              注:
                     [1].在单引号字符串中,惟一允许的转义序列是和
                     [2].在输出单引号字符串时,不会执行变量替换
       4)    printf(“the value of n is:%d”,$n);
              $result=sprintf(“the value of n is:%d”,$n);
       5).number_format()
              格式:    number_format(number);
                            number_format(number,decimals);
                            number_format(number,decimals,dec_point,thousands_sep);
              参数:
                            number:指定想要格式化的数值
                            decimals:指定期望的小数位数
                            thousands_sep:指定用作千位分隔符的字符
              默认:
                            格式化后的结果没有小数
                            在任何小数位之前插入一个点(。)
                            用逗号做为千位分隔符
       6).处理字符串
              [1]. 获得中字符串的长度                  strlen(STRING)
                     如:
                            $mystr=”xcvfwfwef”;
                            $mylen=strlen($mystr);
              [2].去掉字符串中的空白字符(空白字符:空格、制表符、换行符等 )
             

 

 

函数
说明
chop(s)
返回从右边去掉了空白的s的值,与rtrim(s)相同
ltrim(s)
返回从左边去掉了空白的s的值
rtrim(s)
返回从右边去掉了空白的s的值,与chop(s)相同
trim(s)
返回从两端去掉了空白的s的值

 

 

              [3].大小写转换函数
                     strtoupper()返回全部转换为大写的参数值
                     strtolower()返回全部转换为小写的参数值
              [4].比较字符串
             

 

 

函数
说明
strcasecmp(s1,s2)
执行不区分大小写比较,如果s1小于s2,则返回小于0的值,如果s1大于s2,则返回大于0的值,否则返回0
strcmp(s1,s2)
执行区分大小写比较,如果s1小于s2,则返回小于0的值,如果s1大于s2,则返回大于0的值,否则返回0
strncasecmp(s1,s2,n)
执行不区分大小写比较,如果s1小于s2,则返回小于0的值,如果s1大于s2,则返回大于0的值,否则返回0,大比较中最多包括n个字符
strncmp(s1,s2,n)
执行区分大小写比较,如果s1小于s2,则返回小于0的值,如果s1大于s2,则返回大于0的值,否则返回0,大比较中最多包括n个字符

 

 

              [5].查找和提取子串
             

 

 

函数
说明
strchr(s1,s2)
返回s1中从s2的第一次出现到最后的部分。如果没有发现s2,那么返回faslestristr执行相同的操作
stristr(s1,s2)
返回s1中从s2的第一次出现到最后的部分。如果没有发现s2,那么返回fasle,比较时不考虑大小写
strpos(s1,s2)
返回s1s2的第一次出现的整数位置,如果没有发现s2返回false
strrchr(s1,s2)
返回s1中从s2的最后一次出现到最后的部分,如果没有发现s2,返回false,比较中只使用s2的第一个字符
strstr(s1,s2)
返回s1中从s2的第一次出现到最后的部分,如果没有发现s2,返回falsestrchr执行相同的操作
substr(s,start)
substr(s,start,len)
返回s中由一个整数索引start或两个索引startlen指定的部分,字符串的第一个位置是位置0

 

 

              [6].替换子串
             

 

 

函数
说明
str_replace(search,replace,subject)
搜索subject中的子串search,如果找到子串,使用replace替换第一次出现的search,然后返回subject的值
substr_replace(subject,replace,start,len)
使用replace替换在start开始、长度为len的子串,然后返回subject的值

 

 

 
3.常量
       [1].PHP预定义常量
              __FILE__;                    //指定当前文件物理路径(包括文件名)
__LINE__;                   //指定当前脚本所在的行数
PHP_VERSION;           //指定PHP程序的版本
PHP_OS;                            //指定PHP解释器的操作系统名称
TRUE;                         //该常量的值为true
FALSE;                        //该常量的值为false
E_ERROR;                   //指到最近的错误处
E_WARNING;              //指到最近的警告处
E_PARSE;                   //剖析语法有潜在问题的地方
E_NOTICE;                 //发生不正常现象但不一定是错误的地方,如存取一个不存在的变量
 
例:
      
echo __LINE__;
echo __FILE__;
echo PHP_VERSION;
echo PHP_OS;
echo __LINE__;
?>
       [2].用户定义常量
              1).常量的定义
                     如:define(“CL_PI”,3.14159);
              2).常量的引用
                     echo CL_PI;                 //无须$
              3).常量的测试
                     echo defined(“CL_PI”);               //如果已经定义了,返回1,否则返回0
              4).π常量(精确到14位有效数字)
                     echo pi();
4.变量
注:
       1).PHP变量无需预先声明
       2).无需类型定义
       3).不允许未赋值就使用
              例:
$b=1;
$a=true;
    //$a=$b
[1].声明变量 
       (1).全局变量:global $mystr
       (2).静态变量:static $mystr2                            //一般用于子程序循环中,使得循环结束,其变量仍然存在
       (3).动态变量:如:
              $name=”cbw”;
              $$name=111;                //$cbw=111;
              ${$name.”_1”}=222;     //$cbw_1=222;
       (4).标量变量
              $xx=”xx”
[2].判断变量是否已配置
              isset($mystr);        //如果已配置则返回 true
[3].删除变量
              unset($mystr);
      
5.运算符
       1).算术运算符
              —、*/%、++--
       例:
              $a=4;
              $b=2;
       /*
              $a+$b=6
              $a-$b=2
              $a*$b=8
              $a/$b=2
              $a%$b=0               //取余
*/
例:
              $a=5;
              $a++;
                     //$a=6
              $a--;
                     //$a=5
2).赋值运算符
       =
例:
       $a=4;
       $b=$a;
              //$b=4
3).比较运算符
       = =        相等
= = =      相等且类型相同
!=           不等
!= =        不等或类型不同
<           
<=
>=
       4). 逻辑运算       

 

 

&&
而且 (And)
and
而且 (And)
||
或者 (Or)
or
或者 (Or)
xor
异或 (Xor)
!
不 (Not)

 

 

 
5).拼接字符串运算符
              .
      例:
              $str_string1=”这是”;
              $str_string2=”一个PHP程序”;
              $str_string3=$str_string1 . $str_string2;
                     //$str_sring3=”这是一个PHP程序
       6).其它运算符             

 

 

$
变量
&
变量的地址 (加在变量前)
@
不显示错误信息 (加在函数前)
->
类的方法或者属性
=>
数组的元素值
? :
三元运算子

 

 

 
6.数组
       1).数字数组(传统数组:数组项的下标是数组序列)
              [1].使用赋值语句
                     例:
$x[]=”cbw”;          //$x[0]=”cbw”
                                   $x[]=”lj”;                     //$x[1]=”lj”
                     例:
                                   $x[1]=”cbw”          //$x[1]=”cbw”
                                   $x[2]=”lj”             //$x[2]=”lj”
                                   $x[]=”q”               //$x[3]=”q”
例:
                                   $x[10]=”cbw”        //$x[10]=”cbw”
                                   $x[32]=”lj”            //$x[32]=”lj”
                                   $x[]=”q”               //$x[33]=”q”
[2].使用array 创建:
                     例:
                            $a=array(1,2,3,4);
                                   // $a[0]=1
                                   // $a[1]=2
                                   // $a[2]=3
                                   // $a[3]=4
                     例:
                            $x=array(“c”,”b”,”w”);                //$x[0]=”c”     $x[1]=”b”       $x[2]=”w”
                     例:
                            $x=array(10=>”c”,”b”,”w”);         //x[10]=”c”     $x[11]=”b”     $x[12]=”w”
2).关联数组(数组项的下标是命名关键字)
              [1].使用赋值语句
                     例:
                                   $x[“c”]=”cbw”              //$x[“c”]=”cbw”
                                   $x[“l”]=”lj”                  //$x[“l”]=”lj”
                                   $x[“q”]=”q”                  //$x[“q”]=”q”
 
              [2].使用array 创建:
                     例:
                            $b=array(“name”=>”cbw”,”sex”=>””);
                                   //$b[“name”]=”cbw”
                                   //$b[“sex”]=”
3).处理数组
              .返回数组长度:
sizeof($myarray)    //返回数组 $myarray    的长度
count($x)                     //返回数组 $x 的元素数量
              .遍历数组元素:
A.     顺序数组:     for($i=1;$i<22;$i++)循环
B.      非顺序数组(也可用于顺序数组的遍历):
[1].while循环
1           
reset ($arr);                   //将数组的指针指到数组第一个元素
//list:列出数组中元素的值   each:返回数组中下一个元素的索引及值
vhile (list(,$value)=each($arr)){   
    echo "Value$value
n";
}
等价于:
foreach ($arr as $value){
    ecno "value $value
n";
}
                            2
                                   reset ($arr);
while (list($key,$value) each ($arr)){
          echo "Key$key; Value$value
n";
}
等价于:
foreach {$arr as $key => $value){
   echo "Key$key; Value$value
n";
}
[1].   foreach($myarray as $key=>$string) 循环
    foreach($myarray as $string)
参数:           $myarray:目标数组
                     $key              :数组索引变量(自动分配)
                     $string    :数组元素值(自动分配)
例:
                            $myarray=array (“name”=>”cbw”,”sex”=>””,”age”=>”22”);
                            foreach($myarray as $temp_str){
                                   echo $temp_str;                           //输出所有元素
                            }
                            输出:
                                   cbw22
              [2].使用列举函数:current/next()/prev()/key()
              例:
                     $myarray=array("name"=>"cbw","sex"=>"","age"=>"22");
                     $mycurrent=current($myarray);
                     echo key($myarray)."=>".$mycurrent.”
”;
                     $mynext=next($myarray);
                     echo key($myarray)."=>".$mynext.”
”;
                     $mynext=next($myarray);
                     echo key($myarray)."=>".$mynext.”
”;
                     $myprev=prev($myarray);
                     echo key($myarray)."=>".$myprev.”
”;
                     输出:
name=>cbw
sex=>

age=>22
sex=>
              [3].each()函数
              例:
                     $myarray=array("name"=>"cbw","sex"=>"","age"=>"22");
                     $myeach=each($myarray);
                     echo $each[0].”
”;
                     echo $each[1].”
”;
                     echo $each[“key”].”
”;
                     echo $each[“value”].”
”;
                     $myeach=each($myarray);
echo $myeach[0]."
";
echo $myeach[1]."
";
$myeach=each($myarray);
echo $myeach[0]."
";
echo $myeach[1]."
";
输出:
name
cbw
name
cbw
sex

age
22
              [4].list()/each()/next()/prev()
                     $myarray=array("name"=>"cbw","sex"=>"","age"=>"22");
                     list($key,$value)=each($myarray);
                     echo "$key=>$value
";
                     list($key,$value)=each($myarray);
                     echo "$key=>$value
";
                     list($key,$value)=each($myarray);
                     echo "$key=>$value
";
                     输出:
name=>cbw
sex=>

age=>22
.循环取得数组变量值的键值
                     $myarray=array (“name”=>”cbw”,”sex”=>””,”age”=>”22”);
                     foreach ($array as $temp_key =>$temp_str){
                            echo “$temp_key=>$temp_str”;
                     }
              .数组的排序
                     sort()/asort()/rsort()/Arsort()/ksort()/Krsort()
                     例:
                            $myarray=array(10=>”Perl”,20=>”PHP”,21=>”Python”);
                            sort($myarray);
                     输出:
                            0=>PHP
                            1=>Perl
                            2=>Python
                     注:大写字母排在小写字母的前面
                    
排序函数总结

 

 

操作
函数
结果
按值对数组排序
aort()
0=>PHP
1=>Perl
2=>Python
按值对关联数组排序
asort()
20=>PHP
10=>Perl
21=>Python
按值的降序对数组排序
arsort()
21=>Python
10=>Perl
20=>PHP
按标识符对数组或关联数组排序
ksort()
10=>Perl
20=>PHP
21=>Python
按标识符的降序对数组或关联数组排序
krsort()
21=>Python
20=>PHP
10=>Perl

 

 

 
7.函数(用户自定义函数)
       1).访问函数外的值
              $a=1;
              function fun_temp($x){
                     $x=$a;                                //不能访问
                     $x=$GLOBALS[“a”];           //可以访问
                     Global $a;                           //也可以访问
                     $a=2;
}
2).参数的默认值
              function fun_temp($x=”默认值”){
       echo $x;
}
3).按值传递
       例:
              //创建:
              function fun_temp($x){
                     $x=1;
}
//调用:
$y=0;
fun_temp($y);
echo &y;
输出:
       0
       4).按引用传递参数
       例:
              //创建:
              function fun_temp(&$x){
                     $x=1;
}
//调用:
$y=0;
fun_temp($y);
echo &y;
输出:
       1
              或例:
                     //创建:
                     function fun_temp($x){
                            $x=1;
}
//调用:
$y=0;
fun_temp(&$y);
echo &y;
输出:
              1
       5).返回值
              [1].普通返回值
                     例:
                            function square($num){
                                   return $num*$num;
                            }
                     引用:
                            echo square(4);
              [2].返回数组
                     例:
                            function small(){
                                   return myarray(0,1,2);
                            }
                     引用:
                            list($zero,$one,$two)=small();
              [3]返回指针
                     例:
                            function &reference(){
                                   return $some;
                            }
                     引用:
                            $newref=&reference();
       6).变量函数
             
//定义foo()函数
functlon foo(){
//定义bar()函数
functlon bar($arg = ''){
   echo "In bar();argument was '$arg'.
n";
}
$func = 'foo';
$func();        //使用变量调用函数foo()
$func='bar';
$func('test'); //使用变量调用函数bar()
?>
8.分支控制语句
1).if/then语句
       方法一:
              $a=5;
              $b=”4”;
              if($a>$b){                           //在处理表达式时,系统会自动的把 $b 转变成整形
                     echo “a>b”;
              }elseif($a=$b){                                  //可以只有if语句部分
                     echo “a=b”;
              }else{
                     echo “a
              }
       方法二:
              $a=5;
              $b=4;
              if($a>$b)
                     print “a>b”;
              elseif ($a=$b)
                     print “a=b”;
              else
                     print “a
              endif
2).switch语句
       方法一:
              $a=”100”;
              switch($a){
                     case(10):
                            echo “$a=10”;
                            break;
                     case(100):
                            echo “$a=100”;
                     default:
                            echo “$a=?”;
              }
       方法二:
              $a=”100”;
              switch($a)
                     case(10):
                            echo “$a=10”;
                            break;
                     case(100):
                            echo “$a=100”;
                     default:
                            echo “$a=?”;
              endswitch
3).for循环
       方法一:
              for($i=1;$i<10;$i++){
                     echo $i;                 //或者:print $i;
              }
       方法二:
              for($i=1;$i<10;$i++)
                     echo $i;                 //或者:print $i;
              endfor
4).foreach循环
5).while循环
       方法一:
       while(条件){
              语句;
              /*
              if(条件){
                     语句;
              }else{
                     continue;
              }
*/
       }
       方法二:
while(条件)
 
语句;
endwhile
6).do while循环
       do(条件){
              语句;
       }while(条件);
注:
              break用于跳出循环体
              continue用于跳出本次循环,继续下一次循环的判断
二、
       1.类的创建与引用
              创建
                    
                            class book {
                                   var $first;
                                   var $last;
                                   var $number;
function set_name($first,$last){
                                          $this->firt=$first;   //把传递过来的$first变量赋给该类的$first变量成员,下同
                                          $this->last=$last;
                                   }
                                   function set_number($number){
                                          $this->number=$number;
                                   }
                                   function printf(){
                                          echo 'Name'.$this->first. ' ' . $this->last . '
';
                                          echo 'Number'.$this->number;                               //也可以使用return 返回值,
                                   }
                            }
                            $entry=new book ();                           //创建类实体 () 可加也可不加
                            $entry->set_name('Jane','Smith');
                            $entry->set_number('555');
                            $entry-> printf();
                     ?>
              输出:
Name Smith
Number
555
       2.构造函数
              class users{
                     var $first;
                     var $last;
                     var $number;
                            var $i=10;
                     function users ($first,$last,$number){   //构造函数名和类名相同
                            $this->first=$first;
                            $this->last=$last;
                            $this->number=$number;
                     }
function sum(){
                                   return $this->i;
                            }
                     function printf(){
                            echo 'Name'.$this->first.' '.$this->last.'
';
                            echo 'Number'.$this->number;
                     }
              }
              $entry=new users('','北为','100');              //创建类实体
              $entry->printf ();
?>
3.类的继承
      
       class users2 extends users{            //users2为子类或派生类,users为基类或父类
              var $email;
              function users2 ($first,$last,$number,$email){     //构造函数名和类名相同
                     $this->email=$email;
                     $this->first=$first;
                     $this->last=$last;
                     $this->number=$number;
              }
              function printf2(){
                     echo 'Name'.$this->first.' '.$this->last.'
';
                     echo 'Number'.$this->number.'
';
                     echo 'Email'.$this->email;
              }
       }
       $entry=new users2("","北为","100","[email protected]");          //创建类实体
       $entry-> printf2 ();
?>
       4.重载方法
             
class users3 extends users{            //users2为子类或派生类,users为基类或父类
              var $email;
              function users3 ($first,$last,$number,$email){     //构造函数名和类名相同
                     $this->email=$email;
                     $this->first=$first;
                     $this->last=$last;
                     $this->number=$number;
              }
              function printf (){                //重载父类的printf方法
                     echo 'Name'.$this->first.' '.$this->last.'
';
                     echo 'Number'.$this->number.'
';
                     echo 'Email'.$this->email;
              }
       }
       $entry=new users3("","北为","100","[email protected]");          //创建类实体
       $entry-> printf ();
?>
       5.调用父类的方法
             
class users4 extends users{            //users2为子类或派生类,users为基类或父类
              var $email;
var $j=1;
              function users4 ($first,$last,$number,$email){     //构造函数名和类名相同
                     $this->email=$email;
                     $this->first=$first;
                     $this->last=$last;
                     $this->number=$number;
              }
              function printf (){                //重载父类的printf()方法
                     echo 'Name'.$this->first.' '.$this->last.'
';
                     echo 'Number'.$this->number.'
';
                     echo 'Email'.$this->email;
              }
function sum(){                   //重载父类的sum()方法
                     echo '
';
                     echo 'Sum='.(users::sum()+$this->j);           //调用父类的sum()方法的返回值(二个冒号)
              }
       }
       $entry=new users4("","北为","100","[email protected]");          //创建类实体
       $entry-> printf ();
       $entry-> sum();

你可能感兴趣的:(PHP)