PHP后端
php 文件 : 可以包含文本、HTML、JS代码和PHP代码,由于php代码是在服务器上执行的,输出结果的时候,是以纯HTML的形式返回给浏览器的
php 文件的默认文件扩展名是 .php
PHP可以做什么?
- PHP 可以生成动态页面内容
- PHP 可以创建、打开、读取、写入、关闭服务器上的文件
- PHP 可以收集表单数据
- PHP 可以发送和接收 cookies
- PHP 可以添加、删除、修改您的数据库中的数据
- PHP 可以限制用户访问您的网站上的一些页面
- PHP 可以加密数据
通过php,不在限于输出HTML。也可以输出图像、PDF文件、Flash电影等等。
为什么要使用PHP?
- PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等)
- PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等)
- PHP 提供了广泛的数据库支持
- PHP 易于学习,并可高效地运行在服务器端
PHP的基本语法
PHP脚本可以放在文档的任意位置
php标记
<?php
?>
单行注释是 : //
多行注释是: /* */
PHP 变量
变量 : 是用于存储信息的容器
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?> PHP  变量规则: 
 
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
创建(声明)PHP 变量
 PHP  没有声明变量的命令。变量在您第一次赋值给它的时候被创建 
 <?php
$txt="Hello world!";
$x=5;
$y=10.5;
?> 在上面的语句执行中,变量  txt  将保存值  Hello world! ,且变量  x  将保存值  5 。  
  注意: 当赋一个文本值给变量时,需要在文本值两侧加上引号。  
  PHP  是一门弱类型语言  
  在上面的实例中,我们注意到,不必向  PHP  声明该变量的数据类型。  
  PHP  会根据变量的值,自动把变量转换为正确的数据类型。  
  在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。 
 局部和全局作用域
 在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问, 要在一个函数中访问一个全局变量,需要使用 global  关键字  
  在 PHP  函数内部声明的变量是局部变量,仅能在函数内部访问: 
 <?php
$x=5; // 全局变量
function myTest()
{
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x"; //报错
echo "<br>";
echo "变量 y 为: $y";
}
myTest();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y"; //报错
?>在函数中访问全局变量
<?php
// 全局变量
$x=5;
function myTest()
{
global $x; //使用关键字
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo $x; //5
echo "<br>";
echo "变量 y 为: $y";
}
myTest();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
//echo "变量 y 为: $y";
?>PHP global 关键字
 global  关键字用于函数内访问全局变量。  
  在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上  global  关键字: 
 <?php
$x=5;
$y=10;
function myTest()
{
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
 PHP  将所有全局变量存储在一个名为  $GLOBALS[ index ]  的数组中。  index  保存变量的名称。这个数组可 以在函数内部访问,也可以直接用来更新全局变量。  
  上面的实例可以写成这样: 
 <?php
$x=5;
$y=10;
function myTest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y;
?>Static 作用域
 当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。 要做到这一点,请在第一次声明变量时使用 static  关键字: 
 <?php
function myTest()
{
static $x=0; //static关键字删除之后 所有结果都是0
echo $x;
$x++;
echo PHP_EOL; // 换行符
}
myTest();
myTest();
myTest();
?> 然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。 
 参数作用域
 参数是通过调用代码将值传递给函数的局部变量。  
  参数是在参数列表中声明的,作为函数声明的一部分: 
 <?php
function myTest($x)
{
echo $x;
}
myTest(5);
?>PHP 字符串变量
 字符串变量用于存储并处理文本。  
  字符串变量用于包含有字符的值。  
  在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变 量中。  
  在下面的实例中,我们创建一个名为  txt  的字符串变量,并赋值为  "Hello world!"  。然后我们输出  txt  变 量的值: 
 <?php
$txt="Hello world!";
echo $txt;
?>PHP 并置运算符
 在  PHP  中,只有一个字符串运算符。  
  并置运算符  (.)  用于把两个字符串值连接起来。  
  下面的实例演示了如何将两个字符串变量连接在一起: 
 <?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?> 上面的代码将输出: Hello world! What a nice day 
  PHP strlen() 函数
 有时知道字符串值的长度是很有用的。  
  strlen()  函数返回字符串的长度(字节数)。  
  下面的实例返回字符串  "Hello world!"  的长度: 
 <?php
echo strlen("Hello world!");
?>
上面的代码输出为: 12。
 提示: strlen()  常常用在循环和其他函数中,因为那时确定字符串何时结束是很重要的。(例如,在循环 中,我们需要在字符串中的最后一个字符之后结束循环。) 
 PHP strpos() 函数
 strpos()  函数用于在字符串内查找一个字符或一段指定的文本。  
  如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回  FALSE 。 下面的实例在字符串 "Hello world!" 中查找文本  "world" :  
  <?php
echo strpos("Hello world!","world");
?> 上面的代码将输出: 6  
  提示: 在上面的实例中,字符串  "world"  的位置是  6 。之所以是  6  而不是  7  的原因是,字符串中第一个 字符的位置是 0 ,而不是  1 。后面数组下标也是从 0开始。 
  PHP运算符
 在  PHP  中,赋值运算符  =  用于给变量赋值。  
  在  PHP  中,算术运算符  +  用于把值加在一起。 
  PHP 算术运算符
| 运算符 | 名称 | 描述 | 实例 | 结果 | 
| x + y | 加 | x和y的和 | 2 + 2 | 4 | 
| x - y | 减 | x和y的差 | 5 - 3 | 3 | 
| x * y | 乘 | x和y的积 | 5 * 2 | 10 | 
| x / y | 除 | x和y的商 | 15 / 5 | 3 | 
| x % y | 模(除法的余数) | x除以y的余数 |  5 % 2    10 % 8   10 % 2  | 1 2 | 
| -x | 设置负数 |  取  x  的相反符号  |  <?php $x = 2 ;    echo  - $x ;  ?>  | - 2 | 
| ~x | 取反 |  x  取反,按二进制位进行 " 取反 " 运算。运    算规则:  ~1= - 2 ;  ~0= - 1 ;  |  <?php $x = 2 ;    echo ~$x ;  ?>  | - 3 | 
| a.b | 并置 |  连接两个字符串  |  "Hi" . "Ha"  | HiHa | 
<?php
$x=10;
$y=6;
echo ($x + $y); // 输出16
echo '<br>'; // 换行
echo ($x - $y); // 输出4
echo '<br>'; // 换行
echo ($x * $y); // 输出60
echo '<br>'; // 换行
echo ($x / $y); // 输出1.6666666666667
echo '<br>'; // 换行
echo ($x % $y); // 输出4
echo '<br>'; // 换行
echo -$x;
?>PHP 赋值运算符
|  运算符  |  等同于   |  描述  | 
| x = y | x = y |  左操作数被设置为右侧表达式的值  | 
|  x + = y  |  x = x + y  | 加 | 
|  x - = y  |  x = x - y  | 减 | 
|  x  * = y  |  x = x * y  | 乘 | 
|  x /= y  |  x = x / y  | 除 | 
|  x %= y  |  x = x % y  |  模(除法的余数)  | 
|  a .= b  |  a = a . b  |  连接两个字符串  | 
<?php
$x=10;
echo $x; // 输出10
$y=20;
$y += 100;
echo $y; // 输出120
$z=50;
$z -= 25;
echo $z; // 输出25
$i=5;
$i *= 6;
echo $i; // 输出30
$j=10;
$j /= 5;
echo $j; // 输出2
$k=15;
$k %= 4;
echo $k; // 输出3
?><?php
$a = "Hello";
$b = $a . " world!";
echo $b; // 输出Hello world!
$x="Hello";
$x .= " world!";
echo $x; // 输出Hello world!
?>PHP 递增/递减运算符
| 运算符 | 名称 | 描述 | 
|  ++ x  |  预递增  |  x  加  1 ,然后返回  x  | 
|  x ++  |  后递增  |  返回  x ,然后  x  加  1  | 
|  -- x  |  预递减  |  x  减  1 ,然后返回  x  | 
|  x --  |  后递减  |  返回  x ,然后  x  减  1  | 
<?php
$x=10;
echo ++$x; // 输出11
$y=10;
echo $y++; // 输出10
$z=5;
echo --$z; // 输出4
$i=5;
echo $i--; // 输出5
?>PHP 比较运算符
| 运算符 | 名称 | 描述 | 实例 | 
|  x == y  |  等于  |  如果  x  等于  y ,则返回  true  |  5==8  返回  false  | 
|  x === y  |  绝对等于  |  如果  x  等于  y ,且它们类型相同,则返回  true  |  5==="5"  返回 false  | 
|  x != y  |  不等于  |  如果  x  不等于  y ,则返回  true  |  5!=8  返回  true  | 
|  x <> y  |  不等于  |  如果  x  不等于  y ,则返回  true  |  5<>8  返回  true  | 
|  x !== y  |  不绝对等于  |  如果  x  不等于  y ,或它们类型不相同,则返回true  |  5!=="5"  返回  true  | 
|  x > y  |  大于  |  如果  x  大于  y ,则返回  true  |  5>8  返回  false  | 
|  x < y  |  小于  |  如果  x  小于  y ,则返回  true  |  5<8  返回  true  | 
|  x >= y  |  大于等于  |  如果  x  大于或者等于  y ,则返回  true  |  5>=8  返回  false  | 
|  x <= y  |  小于等于  |  如果  x  小于或者等于  y ,则返回  true  |  5<=8  返回  true  | 
<?php
$x=100;
$y="100";
var_dump($x==$y);
echo"<br>";
var_dump($x===$y);echo"<br>";
var_dump($x!=$y);
echo"<br>";
var_dump($x!==$y);echo"<br>";
$a=50;
$b=90;
var_dump($a>$b);
echo"<br>";
var_dump($a<$b);
?>PHP 逻辑运算符
| 运算符 | 名称 | 描述 | 实例 | 
|  x and y  |  与  |  如果  x  和  y  都为  true ,则返回  true  |  x=6 y=3 (x < 10 and y > 1)  返回 true  | 
|  x or y  |  或  |  如果  x  和  y  至少有一个为  true ,则返回 true  |  x=6 y=3 (x==6 or y==5)  返回 true  | 
|  x xor y  |  异   或  |  如果  x  和  y  有且仅有一个为  true ,则返回 true  |  x=6 y=3 (x==6 xor y==3)  返回 false  | 
|  x && y  |  与  |  如果  x  和  y  都为  true ,则返回  true  |  x=6 y=3 (x < 10 && y > 1)  返回 true  | 
|  x || y  |  或  |  如果  x  和  y  至少有一个为  true ,则返回 true  |  x=6 y=3 (x==5 || y==5)  返回 false  | 
|  ! x  |  非  |  如果  x  不为  true ,则返回  true  |  x=6 y=3 !(x==y)  返回  true  | 
数组运算符
| 运算符 | 名称 | 描述 | 
|  x + y  |  集合  |  x  和  y  的集合  | 
|  x == y  |  相等  |  如果  x  和  y  具有相同的键 / 值对,则返回  true  | 
|  x === y  |  恒等  |  如果  x  和  y  具有相同的键 / 值对,且顺序相同类型相同,则返回  true  | 
|  x != y  |  不相等  |  如果  x  不等于  y ,则返回  true  | 
|  x <> y  |  不相等  |  如果  x  不等于  y ,则返回  true  | 
|  x !== y  |  不恒等  |  如果  x  不等于  y ,则返回  true  | 
<?php
$x=array("a"=>"red","b"=>"green");
$y=array("c"=>"blue","d"=>"yellow");$z=$x+$y;//$x和$y数组合并
var_dump($z);
var_dump($x==$y);
var_dump($x===$y);
var_dump($x!=$y);
var_dump($x<>$y);
var_dump($x!==$y);
?>三元运算符
 另一个条件运算符是 "?:" (或三元)运算符。 
  语法格式 
   ( expr1 ) ? ( expr2 ):( expr3 ) 
 <?php
//普通写法
$username=11>10?'yes':'no';echo$username,PHP_EOL;
?>PHP If...Else 语句
PHP 条件语句
 当编写代码时,需要为不同的判断执行不同的动作。可以在代码中使用条件语句来完成此任 
  务。  
  在  PHP  中,提供了下列条件语句: 
  if  语句  -  在条件成立时执行代码  
  if...else  语句  -  在条件成立时执行一块代码,条件不成立时执行另一块代码 
  if...elseif....else  语句  -  在若干条件之一成立时执行一个代码块  
  switch  语句  -  在若干条件之一成立时执行一个代码块 
 if 语句
 if  语句用于 仅当指定条件成立时执行代码 。 
  语法 
 if (条件)
{
条件成立时要执行的代码;
}if...else 语句
 在条件成立时执行一块代码,条件不成立时执行另一块代码 ,请使用  if....else  语句。 
 if (条件)
{
条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}if...elseif....else 语句
 在若干条件之一成立时执行一个代码块 ,请使用  if....elseif...else  语句。 
  if (条件)
{
if 条件成立时执行的代码;
}
elseif (条件)
{
elseif 条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}switch 语句
 switch  语句用于根据多个不同条件执行不同动作。  
  如果您希望 有选择地执行若干代码块之一 ,请使用  switch  语句 
 <?php
switch (n)
{
case label1:
如果 n=label1,此处代码将执行;
break;
case label2:
如果 n=label2,此处代码将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?> 工作原理:首先对一个简单的表达式  n (通常是变量)进行一次计算。将表达式的值与结构中每个  case 的值进行比较。如果存在匹配,则执行与 case  关联的代码。代码执行后,使用  break  来阻止代码跳入 下一个 case  中继续执行。 default  语句用于不存在匹配(即没有  case  为真)时执行。 
 PHP 循环
 在  PHP  中,提供了下列循环语句:  
  while  -  只要指定的条件成立,则循环执行代码块  
  do...while  -  首先执行一次代码块,然后在指定的条件成立时重复这个循环  
  for  -  循环执行代码块指定的次数  
  foreach  -  根据数组中每个元素来循环代码块 
 while 循环
 while  循环将重复执行代码块,直到指定的条件不成立。 
 while (条件)
{
要执行的代码;
}do...while 语句
 do...while  语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。 
 do
{
要执行的代码;
}
while (条件);For 循环
 for  循环用于您预先知道脚本需要运行的次数的情况。  
 
 语法 
 
for (初始值; 条件; 增量)
{
要执行的代码;
} 参数:  
  初始值 :主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次  
  的代码)。  
  条件 :循环执行的限制条件。如果为  TRUE ,则循环继续。如果为  FALSE ,则循环结束。  
  增量 :主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。  
  注释: 上面的 初始值 和 增量 参数可为空,或者有多个表达式 
 foreach 循环
foreach 循环用于遍历数组。
foreach ($array as $value)
{
要执行代码;
} 每进行一次循环,当前数组元素的值就会被赋值给  $value  变量(数组指针会逐一地移动),在进行下一 次循环时,您将看到数组中的下一个值。 
 foreach ($array as $key => $value)
{
要执行代码;
}PHP 数组
 数组能够在单个变量中存储多个值 
 数组是什么?
数组是一个能在单个变量中存储多个值的特殊变量。
如果您有一个项目清单(例如:车名字的清单),将其存储到单个变量中,如下所示
$cars1="Volvo";
$cars2="BMW";
$cars3="Toyota"; 然而,如果您想要遍历数组并找出特定的一个呢?如果数组的项不只  3  个而是  300  个呢?  
  解决办法是创建一个数组!  
  数组可以在单个变量中存储多个值,并且您可以根据键访问其中的值。 
 在 PHP 中创建数组
 在  PHP  中, array()  函数用于创建数组 
 array(); 在  PHP  中,有三种类型的数组:  
  数值数组  -  带有数字  ID  键的数组  
  关联数组  -  带有指定的键的数组,每个键关联一个值  
  多维数组  -  包含一个或多个数组的数组 
 PHP 数值数组
这里有两种创建数值数组的方法:
 自动分配  ID  键( ID  键总是从  0  开始) 
 $cars=array("Volvo","BMW","Toyota"); 人工分配  ID  键 
 $cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";获取数组的长度 - count() 函数
 count()  函数用于返回数组的长度(元素的数量) 
 <?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>