阿里云
发表主题 回复主题
  • 1274阅读
  • 4回复

[基础常识]【转载】PHP小常识

级别: 论坛版主
发帖
1149
云币
3819
1.变量 km+}./@  
  1. <?php
  2.         //变量声明(php变量无需单独创建,变量会在第一次赋值时创建)
  3.         $a = 1;
  4.         
  5.         //弱类型(php变量会根据其值自动转换为相应的数据类型)
  6.         $a = "a";
  7.         $A = 2.0;
  8.         
  9.         //命名规则(大小写敏感,建议采用小驼峰方式并增加三字节的类型前缀)
  10.         $strName = "张伟佩";
  11.         $intAge = 24;
  12.         
  13.         //作用域
  14.         function sayHi(){
  15.             $strLocal = "小红";
  16.             echo $strName." say hi";  // say hi
  17.             echo $strLocal." say hi"; // 小红 say hi
  18.             //Global作用域只能在函数外进行访问,若在函数内访问可以通过以下两种方式
  19.             //1.在变量前加global关键字
  20.             global $strName;
  21.             echo $strName." say hi";  // 张佩 say hi
  22.             //2.通过数组$GLOBALS[index],该数组已键值对形式存放了所有全局变量
  23.             echo $GLOBALS['intAge'];  //24
  24.         }
  25.         sayHi();
  26.    ?>
2.运算符 ]&kzIxh  
·常规运算符 5 qW*/  
  1. = + - * / % += *= ++ --
[font=&quot]·字符加“.” Mk"V%)1k  
  1. <?php
  2.         //字符连接符
  3.         $str1 = "hello";
  4.         echo $str1." world"; //hello world
  5.         //a.=b 即 a = a.b
  6.         $str2 = " world";
  7.         $str1.=$str2;   //$str1 = $str1.$str2;
  8.         echo $str1; //hello world
  9.     ?>
·比较运算符 3cztMi  
  1. <?php
  2.         $a = "1";
  3.         $b = 1;
  4.         //“==” 判断两个变量数值是否相等
  5.         var_dump($a == $b);  //bool(true)
  6.         //“===”判断两个变量数值和类型是否都一致
  7.         var_dump($a === $b); //bool(false)
  8.         
  9.         //由于php变量具有弱类型,两变量若类型不同,比较时具有一定规则
  10.         //first 存在bool的都转为bool,true > false
  11.         var_dump(true > 0);  //bool(true)
  12.         //next 存在数字,均转为数字
  13.         var_dump("12" > 2);   //bool(true)
  14.         var_dump(1 > "a");    //bool(true)  
  15.         var_dump('f' > 2);    //bool(false)
  16.         //next 均为数字字符串则转为数字比较
  17.         var_dump("12" > "110"); //bool(fase)
  18.         //last 按字符串比较
  19.         var_dump("a1" < "b");  //false
  20.     ?>
\hcb~>=C  
3.数组 ?a]u yw,  
  1. <?php
  2.         //数组声明通过array关键词,除定义常规数组外还可以通过=>来声明键值对数组
  3.         $arrCars = array("bmw","volvo","audi","volvo");
  4.         $arrAges = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
  5.         //数组遍历
  6.         //1.for
  7.         for($i = 0;$i < count($arrCar);$i++){
  8.             echo $arrCar[$i];
  9.         }
  10.         //2.foreach
  11.         foreach($arrCars as $car){
  12.             echo $car;
  13.         }
  14.         foreach($arrAges as $key => $value){
  15.             echo $key."'s age is ".$value;
  16.         }
  17.         //3.指针
  18.         reset($arrAges);
  19.         while(list($key,$val)= each($arrAges)) {
  20.             echo "$key=> $val<br />";
  21.         }
  22.         
  23.         //常用数组方法
  24.         count($arrCar); //返回数组大小,4
  25.         sort($arrCar);  //排序,按元素内容正向排序,【"audi","bmw","volvo","volvo"】
  26.         usort($arrCar,"mySortFunc");  //根据自定义函数进行排序
  27.         array_unique($arrCar);  //移除重复元素,【"audi","bmw","volvo"】
  28.         array_push($arrCar,"tesla"); //入栈元素,【"audi","bmw","volvo","tesla"】
  29.         array_shift($arrCar);   //删除并返回数组首个元素,【"bmw","volvo","tesla"】
  30.         array_map("myMapFunc",$arrCar);   //对数组内每个元素执行自定义函数
  31.     ?>
oztfr<cUH  
4.字符串函数 V9o_Q  
·strlen(str) 返回字符串str长度 3%$nRP X  
  1. <?php
  2.         $strName = "HelloWorld";
  3.         echo strlen(strName);   //10
  4.     ?>
·strpos(str,subStr) 返回子串subStr在str的位置 QX$i ]y%S  
  1. <?php
  2.         $strName = "Hello World";
  3.         echo strpos(strName,"World");   //6
  4.     ?>
· explode() 将字符串转换为数组 .sk$@Q  
  1. <?php
  2.         $arrWords = explode(" ","Hello World");
  3.         var_dump($arrWords);    //array(0 => "Hello",1 => "World")
  4.         //implode与explode相对,将数组转换为字符串,别名join
  5.         echo implode(" ",$arrWords);  //"Hello World"
  6.     ?>
·strcmp($str1,$str2) 比较两字符串的大小 "jyh.@<  
  1. <?php
  2.         $str1 = "hello";
  3.         $str2 = "world";
  4.         if(strcmp($str1,$str2) > 0)
  5.           echo "$str1大于$str2";
  6.     ?>
5.类与对象 P{!r<N  
  1. <?php
  2.         //通过Class关键字声明类,封装了相关的成员属性和方法
  3.         Class Person{
  4.             //类的属性
  5.             public $name;
  6.             //类构造函数
  7.             function __construct($n){
  8.                 $this->name = $n;
  9.             }
  10.             //【public】公有方法,在各个位置均可访问
  11.             public function sayHi(){
  12.                 echo "hi,my name is ".$this->name;
  13.             }
  14.             //【private】私有方法,只有在本类中访问
  15.             private function temp(){
  16.                 echo "here in Person";
  17.             }
  18.         }
  19.         //子类(通过extends关键字继承父类中修饰符为public和protected的属性和方法,php中为单继承,父类仅有一个)
  20.         Class Programmer extends Person{
  21.             public $type;
  22.             //当子类中可以声明与父类中同名的方法,该方法具有与父类不同的功能,称为重载
  23.             function __construct($n,$t){
  24.                 //当需要调用父类中方法时,通过parent::funcName来访问
  25.                 parent::__construct($n);
  26.                 //$this是类中自带的指针,指向当前调用该方法的对象
  27.                 $this->type = $t;
  28.             }
  29.             public function sayType()
  30.             {
  31.                 echo "I'm a ".$this->type;
  32.             }
  33.         }
  34.         //通过new关键字声明子类对象
  35.         $objPgm = new Programmer("zhangweipei","rd");
  36.         //调用父类继承的方法
  37.         $objPgm->sayHi();   //hi,my name is zhangweipei
  38.         //调用自身方法
  39.         $objPgm->sayType(); //I'm a rd
  40.         //父类中private方法无法被继承,因此下面调用报错
  41.         $objPgm->temp();    //Fatal error
  42.     ?>
6.魔术方法 aH1mW;,1u  
在类中具有“魔术功能”的一些特定方法称为魔术方法,通常以__开头,常见的魔术方法除上面见到的__construct外还有__set、__get、__call等 +R_w- NI  
方法说明语法
__construct构造函数,创建对象时public void __construct (mixed $value)
__set在给不可访问属性赋值时public void __set ( string $name , mixed $value )
__get读取不可访问属性的值时public mixed __get ( string $name)
__call在对象中调用一个不可访问方法时public mixed __call ( string $name , array $arguments )
2nFSu9}+r  
  1. <?php
  2.         Class Person{
  3.             private $name = "defalutName";
  4.         
  5.             public function sayHi(){
  6.                 echo "hi,my name is ".$this->name."\n";
  7.             }
  8.             private function temp(){
  9.                 echo "Inside in Person";
  10.             }
  11.             //在给不可访问属性赋值时
  12.             public function __set($name , $value){
  13.                 echo "you're setting ".$name." to ".$value."\n";
  14.             }
  15.             //读取不可访问属性的值时
  16.             public function __get($name){
  17.                 echo "you're getting ".$name."\n";
  18.             }
  19.             //在对象中调用一个不可访问方法时
  20.             public function __call($name , $arguments)
  21.             {
  22.                 echo "you're calling function ".$name." with arguments ".implode(",", $arguments)."\n";
  23.             }
  24.         }
  25.         $objP = new Person();
  26.         echo $objP->name;           //you're getting name
  27.         $objP->sayHi();             //hi,my name is defalutName
  28.         $objP->name = "Lee";        //you're setting name to Lee
  29.         $objP->temp("arg1","arg2"); //you're calling function temp with arguments arg1,arg2
  30.         
  31.     ?>
7.文件操作 v!pT!(h4  
  1. <?php
  2.         //打开文件,第一个参数为文件路径,第二个为打开模式,
  3.         //常见的打开模式有r只读、w只写、r只写(追加)、x只写(文件不存在时不新建)、r+读写等
  4.         $fileHandle = fopen("test.txt","a+");
  5.         //全读
  6.         $strContent = fread($fileHandle,filesize("test.txt"));
  7.         //逐行读
  8.         while(!feof($fileHandle)){
  9.             $strLine = fgets($fileHandle);
  10.         }
  11.         //写文件
  12.         fwrite($fileHandle,"hello world\n");
  13.         //关闭文件
  14.         fclose($fileHandle);
  15.         
  16.     ?>
8.异常处理 |<n+6  
[font=&quot]当异常发生时,若未被捕获或执行相应处理将导致严重错误而中断程序,通过异常处理方法可以捕获异常并执行相应的逻辑 U_UX *  
  1. <?php
  2.      //handleArr方法仅接受array类型的参数,否则便抛出异常
  3.      function handleArr($arr)
  4.      {
  5.         if(!is_array($arr)){
  6.             //Exception为php内置的异常类,接受两个参数,第一个为错误信息,第二个为错误代码
  7.             //也自定义继承系统Exception类的异常类,然后在catch中调用自定义方法
  8.             throw new Exception("param is not array", 1);
  9.         }
  10.         # some code handle with arr
  11.      }
  12.      try {
  13.         $intTemp = 1;
  14.         //传入整形参数,触发异常
  15.         handleArr($intTemp);  
  16.      }
  17.      //捕捉异常
  18.      catch (Exception $e) {
  19.         //Exception中的常用方法有
  20.         echo $e->getCode();  //返回错误代码
  21.         echo $e->getMessage(); //返回错误信息
  22.         echo $e->getFile();  //返回代码文件的完整路径
  23.         echo $e->getLine();  //返回代码文件中产生异常的代码行号
  24.      }
  25. ?>
IaU  
9.系统变量 M)U 32gI:  
变量说明
$GLOBALS全局作用域中可用的变量
$_SERVER服务及执行环境信息
$_GET通过 URL 参数传递给当前脚本的变量的数组
$_POST通过Post方式传递给当前脚本的变量的数组
$_COOKIE通过 HTTP Cookies 方式传递给当前脚本的变量的数组
本帖最近评分记录: 1 条评分 云币 +1
魔咒626 云币 +1 优秀文章-欢迎进行技术分享,感谢你的支持! 2017-07-29
级别: 论坛版主
发帖
1966
云币
4134
只看该作者 沙发  发表于: 2017-07-29
优秀文章-欢迎进行技术分享,感谢你的支持!
级别: 架构狮
发帖
1240
云币
2018
只看该作者 板凳  发表于: 01-25
;^l_i4A  
优秀文章-欢迎进行技术分享,感谢你的支持!
级别: 架构狮
发帖
1240
云币
2018
只看该作者 地板  发表于: 01-25
2K]IlsMO&  
优秀文章-欢迎进行技术分享,感谢你的支持!
级别: 架构狮
发帖
1240
云币
2018
只看该作者 4楼 发表于: 01-25
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 63 - 6 = ?
上一个 下一个