PHP代码在服务器端执行,PHP中所有变量都对大小写敏感。
变量
变量规则
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
注意:
PHP 是一门弱类型语言,PHP 会根据变量的值,自动把变量转换为正确的数据类型。
在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
变量作用域
变量的作用域是脚本中变量可被引用/使用的部分。
有四种不同的变量作用域:
1、local
2、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();
?>
3、static
当一个函数完成时,它的所有变量通常都会被删除。但有时候希望某个局部变量不要被删除,则需要在第一次声明变量时使用 static 关键字,这样每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
注释:该变量仍然是函数的局部变量。
<?php
function myTest() {
static $x=0;
echo $x;
$x++;
echo PHP_EOL; // 换行符
}
myTest(); //输入 0
myTest(); //输入 1
myTest(); //输入 2
?>
4、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()