PHP
php是一种后台编程语言;使用php可以开发动态网站和后台接口(所谓接口就是url地址,用于给前端提供数据)。
变量
变量规则
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
-
注意:
PHP 是一门弱类型语言,PHP 会根据变量的值,自动把变量转换为正确的数据类型。
在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
变量作用域
变量的作用域是脚本中变量可被引用/使用的部分。
有四种不同的变量作用域:
-
local
-
global
用于函数内访问全局变量。
函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组
<?php $a=5; $b=3; function t1() { global $a,$b; echo $a-$b; // 输出 2 } t1(); echo PHP_EOL; function t2() { echo $GLOBALS['a']-$GLOBALS['b']; // 输出 2 } t2(); ?>
-
static
当一个函数完成时,它的所有变量通常都会被删除。但有时候希望某个局部变量不要被删除,则需要在第一次声明变量时使用 static 关键字,这样每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
注释:该变量仍然是函数的局部变量。
<?php function myTest() { static $x=0; echo $x; $x++; echo PHP_EOL; // 换行符 } myTest(); //输入 0 myTest(); //输入 1 myTest(); //输入 2 ?>
-
parameter(参数作用域)
参数是通过调用代码将值传递给函数的局部变量。
内容输出
- echo:输出简单数据类型,如字符串、数值
- print_r():输出复杂数据类型,如数组
- var_dump():输出详细信息,如对象、数组
字符串拼接
-
js中字符串拼接用
+
;php中字符串拼接用.
-
strlen() 函数返回字符串的长度(字节数)
-
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
单引号与双引号
- 单引号中的变量会当作普通字符串处理
- 双引号中的变量会解析为变量值
数据类型
- 字符串
- 整型
- 浮点型
- 布尔型
- 数组
- NULL
<?php
$x = "Hello world!";
$x = 5985;
$x = -345; // 负数
$x = 0x8C; // 十六进制数
$x = 047; // 八进制数
$x = 10.365;
$x = 2.4e3;
$x = 8E-5;
$x = true;
$x = array("Volvo","BMW","Toyota");
$x = null;
var_dump($x) //返回变量的数据类型和值
?>
- 对象
对象数据类型也可以用于存储数据。
在 PHP 中,对象必须声明,使用class关键字声明类对象。类是可以包含属性和方法的结构。类中定义数据类型,然后在实例化的类中使用数据类型。
<?php
class Car {
var $color;
function __construct($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
function print_vars($obj) {
foreach (get_object_vars($obj) as $prop => $val) {
echo "$prop = $val";
}
}
// 实例一个对象
$herbie = new Car("white");
print_vars($herbie);
?>
条件语句
- if 语句 - 在条件成立时执行代码
- if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
- if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
- switch 语句 - 在若干条件之一成立时执行一个代码块
elseif 和 else if 完全同效果,elseif 是 PHP 为 else if 专门做到容错版。更准确更严格到写法为后者: else if
数组
array() 函数 ----- 创建数组
数值数组
带有数字 ID 键的数组
<?php
//两种创建数值数组的方法:
// 1.自动分配 ID 键(ID 键总是从 0 开始):
$cars = array("Volvo","BMW","Toyota");
// 2.人工分配 ID 键:
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
//获取数组的长度
echo count($cars);
//遍历 -- for循环
for($i =0; $i<count($cars); $i++){
echo $age1[$i];
echo "<br/>";
}
?>
关联数组
带有指定的键的数组,每个键关联一个值
<?php
//两种创建关联数组的方法:
$age=array("Peter" => "35", "Ben" => "37", "Joe" => "43");
$age['Peter'] ="35";
$age['Ben'] = "37";
$age['Joe'] = "43";
echo $age['Peter']; // 35
//遍历 -- foreach循环
foreach($age as $x => $x_value){
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
多维数组
包含一个或多个数组的数组
<?php
// 二维数组:
$cars = array
(
array("Volvo",100,96),
array("BMW",60,59),
array("Toyota",110,100)
);
echo $cars[0][1]; // 100
?>
数组排序函数
PHP 数组排序函数:
- sort() - 对数组进行升序排列
- rsort() - 对数组进行降序排列
- asort() - 根据关联数组的值,对数组进行升序排列
- arsort() - 根据关联数组的值,对数组进行降序排列
- ksort() - 根据关联数组的键,对数组进行升序排列
- krsort() - 根据关联数组的键,对数组进行降序排列
<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);
print_r($cars); // Array ( [0] => BMW [1] => Toyota [2] => Volvo )
$age = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
asort($age);
print_r($age); // Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
$age2 = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
ksort($age2);
print_r($age); // Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 )
?>
超级全局变量
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
$_POST
- $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
<form action="login.php" method="post" >
name: <input type="text" name="name" >
password: <input type="password" name="pwd">
<button type="submit">Login</button>
</form>
// login.php
<?php
// 根据表单中name属性值获取
$name = $_POST['name'];
$pwd = $_POST['pwd'];
echo $name;
echo $pwd;
header("Content-Type:text/html; charset=utf-8"); //设置服务器响应的文件类型,字符集编码
?>
$_GET
-
$_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
-
$_GET 也可以收集URL中发送的数据。
<?php
/* url: http://www.test.cc/?name=abc
$_GET['name'] 得到url地址中传递的参数name的值
*/
$name = $_GET['name'];
echo $name;
?>
循环
- while - 只要指定的条件成立,则循环执行代码块
- do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
- for - 循环执行代码块指定的次数
- foreach - 根据数组中每个元素来循环代码块
<?php
// 使用for循环,实现冒泡排序:
$arr = array(5,3,6,2,8,10);
for($i = count($arr)-1;$i>=0;$i--){
for($j = 0 ; $j < $i ; $j++){
if($arr[$j+1] > $arr[$j] ){
$aa = $arr[$j+1];
$arr[$j+1] = $arr[$j];
$arr[$j] = $aa;
}
}
}
print_r($arr);
?>
函数
自定义函数
- 语法规则(函数名不区分大小写)
<?php
function foo($name){
return $name;
}
$name = foo('zhangsan');
echo $name;
?>
系统函数(内置函数)
- gettype()
- json_encode()