基础语法

  1. PHP 脚本以 <?php 开头,以 ?> 结尾。
  2. PHP 文件的默认文件扩展名是 ".php"。
  3. PHP 语句以分号结尾(;)。
  4. 在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感,所有变量都对大小写敏感。

注释

						<?php
						// 这是单行注释
						
						# 这也是单行注释
						
						/*
						这是多行注释块
						它横跨了
						多行
						*/
						?>
					

变量声明

  1. 变量以 $ 符号开头,其后是变量的名称
  2. 变量名称必须以字母或下划线开头
  3. 变量名称不能以数字开头
  4. 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
  5. 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
  6. PHP 有三种不同的变量作用域:local(局部)global(全局)static(静态)
  7. PHP数据类型:字符串、整数、浮点数、逻辑、数组、对象、NULL
  8. 超全局变量:$GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSION
					<?php
					define("GREETING", "Welcome to W3School.com.cn!"); // 常量定义
					$txt="Hello world!"; // 全局作用域
					$x=5;
					$y=10.5;
					$cars=array("Volvo","BMW","SAAB");
					
					function myTest() {
					  global $x,$y; // 函数内部引用全局变量
					  $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; // 使用全局变量
					  $z=10; // 局部作用域
					  static $m=0; // 函数执行完static声明的变量值会保持
					} 

					?>
					

字符串

					<?php
					$str1 = '单引号字符串';
					$str2 = "双引号字符串";
					$str3 = <<<TEXT
						多行文本字符串
					TEXT;
					
					echo strlen("Hello world!"); // strlen() 函数返回字符串的长度,以字符计。
					echo strpos("Hello world!","world"); //strpos() 函数用于检索字符串内指定的字符或文本。
					?>
					

运算符

运算符名称实例
+ 加法 $x + $y
- 减法 $x - $y
* 乘法 $x * $y
/ 除法 $x / $y
% 模数 $x % $y
. 字符串拼接 $txt1 = "Hello" $txt2 = $txt1 . " world!"
== 等于 $x == $y
=== 全等(完全相同) $x === $y
!= 不等于 $x != $y
<>> 不等于 $x <> $y
!== 不全等(完全不同) $x !== $y
> 大于 $x > $y
< 小于 $x < $y
>= 大于或等于 $x >= $y
<= 小于或等于 $x <= $y
and $x and $y
or $x or $y
xor 异或 $x xor $y
&& $x && $y
|| $x || $y
! !$x

流程控制

					<?php
					// if语句
					if (条件) {
					  条件为 true 时执行的代码;
					} elseif (condition) {
					  条件为 true 时执行的代码;
					} else {
					  条件为 false 时执行的代码;
					}
					
					// switch语句
					switch (表达式)
					{
					case 标签1:
					  表达式的值匹配标签1时执行;
					  break;  
					case 标签2:
					  表达式的值匹配标签2时执行;
					  break;
					default:
					  表达式没有匹配任何标签时执行;
					}
					
					//while 循环
					while (条件为真) {
					  要执行的代码;
					}
					
					//do...while 循环
					do {
					  要执行的代码;
					} while (条件为真);
					
					//for 循环
					for (初始值; 条件为真; 步长) {
					  要执行的代码;
					}
					
					//foreach 循环
					foreach ($array as $value) {
					  要执行的代码;
					}
					?>
					

函数

					<?php
					// 函数声明
					function functionName() {
					  被执行的代码;
					}
					
					// 函数参数
					function familyName($fname) {
					  echo "$fname Zhang.
"; } // 默认参数 function setHeight($minheight=50) { echo "The height is : $minheight
"; } //函数返回值 function sum($x,$y) { $z=$x+$y; return $z; } ?>

数组

					<?php
					//索引数组声明
					$cars=array("Volvo","BMW","SAAB");
					echo count($cars); // count() 函数用于返回数组的长度(元素数)
					echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
					//索引数组遍历
					$arrlength=count($cars);
					for($x=0;$x<$arrlength;$x++) {
					  echo $cars[$x];
					  echo "
"; } //关联数组声明 $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); echo "Peter is " . $age['Peter'] . " years old."; //关联数组遍历 foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } //数组排序 //sort() - 以升序对数组排序 //rsort() - 以降序对数组排序 //asort() - 根据值,以升序对关联数组进行排序 //ksort() - 根据键,以升序对关联数组进行排序 //arsort() - 根据值,以降序对关联数组进行排序 //krsort() - 根据键,以降序对关联数组进行排序 ?>

日期

					<?php
					//日期函数
					//date(format,timestamp)
					//d - 表示月里的某天(01-31)
					//m - 表示月(01-12)
					//Y - 表示年(四位数)
					//1 - 表示周里的某天
					//h - 带有首位零的 12 小时小时格式
					//i - 带有首位零的分钟
					//s - 带有首位零的秒(00 -59)
					//a - 小写的午前和午后(am 或 pm)
					echo "今天是 " . date("Y/m/d") . "
"; echo "现在时间是 " . date("h:i:sa"); //设置时区 date_default_timezone_set("Asia/Shanghai"); //创建日期 mktime(hour,minute,second,month,day,year) //用字符串来创建日期 $d=strtotime("10:38pm April 15 2015"); echo "创建日期是 " . date("Y-m-d h:i:sa", $d); $d=strtotime("tomorrow"); echo date("Y-m-d h:i:sa", $d) . "
"; $d=strtotime("next Saturday"); echo date("Y-m-d h:i:sa", $d) . "
"; $d=strtotime("+3 Months"); echo date("Y-m-d h:i:sa", $d) . "
"; ?>

文件包含/命名空间

					<?php
					//文件引用
					include 'filename'; //异常时脚本会继续
					require 'filename'; //异常时脚本会停止
					
					//定义命名空间
					namespace MyProject; 
					namespace MyProject\Sub\Level;  //声明分层次的单个命名空间
					
					//命名空间导入
					use My\Full\Classname as Another;
					?>
					

面向对象

					<?php
					//类定义
					class Site {
					  /* 成员变量 */
					  var $url;
					  var $title;
					  
					  //构造函数
					  function __construct($par1="",$par2="") {
						 $this->url = $par1;
						 $this->title = $par2;
					  }
					  
					  //析构函数
					  function __destruct() {
					     print "销毁\n";
					  }
					  
					  /* 成员函数 */
					  function setUrl($par){
					     $this->url = $par;
					  }
					  
					  function getUrl(){
					     echo $this->url . PHP_EOL;
					  }
					  
					  function setTitle($par){
					     $this->title = $par;
					  }
					  
					  function getTitle(){
					     echo $this->title . PHP_EOL;
					  }
					}
					
					//创建对象
					$google = new Site;
					// 调用成员函数,设置标题和URL
					$google->setTitle( "Google 搜索" );
					$google->setUrl( 'www.google.com' );
					// 调用成员函数,获取标题和URL
					$google->getTitle();
					$google->getUrl();
					
					//继承
					class Child_Site extends Site {
					    var $category;
					   
					   const constant = '常量值';
					   public static $my_static = 'foo'; //类变量
					   
					    //访问控制
					    public $public = 'Public';
					    protected $protected = 'Protected';
					    private $private = 'Private';
						
						function __construct() {
					       parent::__construct();  // 子类构造方法不能自动调用父类的构造方法
					       print "SubClass 类中构造方法" . PHP_EOL;
					   }
						
						function setCate($par){
							$this->category = $par;
						}
					  
						function getCate(){
							echo $this->category . PHP_EOL;
						}
						
						//方法重写
						function getUrl() {
						   echo $this->url . PHP_EOL;
						   return $this->url;
						}
						   
						function getTitle(){
						   echo $this->title . PHP_EOL;
						   return $this->title;
						}
						
						// 声明一个公有的方法
					    public function MyPublic() { }
					
					    // 声明一个受保护的方法
					    protected function MyProtected() { }
					
					    // 声明一个私有的方法
					    private function MyPrivate() { }
					}
					
					// 声明一个'iTemplate'接口
					interface iTemplate
					{
					    public function setVariable($name, $var);
					    public function getHtml($template);
					}
					
					//抽象类
					abstract class AbstractClass
					{
					 // 强制要求子类定义这些方法
					    abstract protected function getValue();
					    abstract protected function prefixValue($prefix);
					
					    // 普通方法(非抽象方法)
					    public function printOut() {
					        print $this->getValue() . PHP_EOL;
					    }
					}
					
					// 实现接口
					class Template implements iTemplate
					{
					    private $vars = array();
					  
					    public function setVariable($name, $var)
					    {
					        $this->vars[$name] = $var;
					    }
					  
					    public function getHtml($template)
					    {
					        foreach($this->vars as $name => $value) {
					            $template = str_replace('{' . $name . '}', $value, $template);
					        }
					 
					        return $template;
					    }
					}
					?>
					

文件操作

					<?php
					//打开文件,模式:r(只读)r+(读/写)w(只写)w+(读/写)a(追加)a+(读/追加)x(只写)x+(读/写)
					$file = fopen("welcome.txt", "r") or exit("无法打开文件!");
					// 读取文件每一行,直到文件结尾
					while(!feof($file))
					{
					    echo fgets($file). "<br>";
					}
					//逐字符读取文件
					while (!feof($file))
					{
					    echo fgetc($file);
					}
					//关闭文件
					fclose($file);
					?>