语法基础
1. 变量
1.1 PHP没有创建变量的命令,声明变量时候必须赋初始值,即弱类型语言
1.2 变量的作用域指的是变量能够被引用/使用的那部分脚本
1.3 全局作用域:只能在函数外部使用;局部作用域:只能在函数内部使用
1.4 预定义变量$GLOBALS存储着所有的全局变量
1.5 global 可以声明一个变量为全局变量(如果此全局变量存在则引用全局变量的内存地址创建同名变量)
1.6 预定义变量: GET、_GET、GET、_POST、REQUEST、_REQUEST、REQUEST、_FILES、SERVER、_SERVER、SERVER、_SESSION、COOKIE、_COOKIE、COOKIE、__GLOBALS
1.7 常量是不受作用域限制的
1.8 全局变量的生命周期:从脚本执行开始到脚本执行结束
1.9 局部变量的声明周期:从函数执行开始到函数执行结束
1.10 静态变量: 这个变量所存储的信息都是函数最后一次被调用时所包含的信息
$i = 100;
$aaa = 200;
$z;
define("COLOR", "RED"); // 定义一个常量
function demo2() {
global $z; // 声明/创建一个全局变量
global $xxxxxx;
$xxxxxx = 5;
$y = 6;
$z = $xxxxxx + $y;
echo $z . "---";
$z = "Hello world!<br/>";
echo $z;
function t() {
global $xxxxxx;
echo $xxxxxx."<br>";
echo $GLOBALS["z"]; //引用预定义变量下的指定key
}
t();
echo COLOR;
}
// demo2();
// echo "---";
// print_r($GLOBALS["xxxxxx"]); //此时变量xxxxxx已被设置为全局变量
2. 打印输出
2.1 echo: 能够输出一个以上的字符串,输出字符可以用逗号隔开
2.2 print: 只能输出一个字符串,并始终返回 1
2.3 print_r(): 可打印复合类型数据
2.4 var_dump(): 可打印更详细的复合类型数据,包括数据类型
function demo4() {
$txt = "Learn PHP";
$cars = array("Volvo", "BMW", "SAAB");
echo "<h2>PHP is FUN</h2>";
echo "Hello<br>";
echo "This"," String"," was"," made<br>";
echo $txt."<br>";
echo "My car is a {$cars[0]}";
print "<h2>PHP is FUN</h2>";
print "HL ".$txt."<br>";
print "I'm about to learn PHP!<br>";
var_dump($cars);
}
// demo4();
3. 数据类型
3.1 七种类型: 整数、浮点数、字符串、数组、对象、NULL、布尔
3.2 字符串: 单双引号功能相同,包含为任何文本
3.3 整数: 三种格式分别是十进制、十六进制、八进制
function demo5() {
// 字符串类型
$x = "Hello world!";
var_dump($x);
echo "<br>";
// 整数
$y = 555;
var_dump($y);
echo "<br>";
// 浮点数
$z = 10.112;
var_dump($z);
echo "<br>";
// 布尔
$bool = true;
var_dump($bool);
echo "<br>";
// 数组
$array = array("aa", "bb", "cc");
var_dump($array);
echo "<br>";
// 对象
class Car {
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
function Enumeral($obj) {
// 遍历对象属性
foreach(get_object_vars($obj) as $prop => $val) {
echo "\t$prop = $val \n";
}
}
$instance_car = new Car("white");
var_dump($instance_car->what_color());
echo "<br>";
Enumeral($instance_car);
echo "<br>";
// NULL值
$null = null;
var_dump($null);
}
// demo5();
4. 字符串函数
4.1 strlen(): 返回字符串字节长度
4.2 str_word_count(): 返回单词个数
4.3 strrev(): 反转字符串
4.4 strpos(): 检索并返回指定字符串或文本在需检索字符串中的位置
4.5 str_replace(): 用一些字符串替换字符串中的另一些字符串
function demo6() {
echo strlen("Hello w发"); // 10个字节
echo "<br>";
echo str_word_count("Hello w发"); //2
echo "<br>";
echo strrev("HELLO");
echo "<br>";
echo strpos("Hello world!", "H");
echo "<br>";
echo str_replace("world", "Kitty", "Hello world"); //Hello Kitty
}
// demo6();
5. 常量
5.1 常量贯穿整个脚本是自动全局
5.2 define(key, val, boolean)第三个参数为false表示对大小写敏感
function demo7() {
define("GREETING", "Welcome to W3School.com.cn", false);
define("TOKEN", "GL12323", true);
echo GREETING;
echo "<br>";
echo Token;
}
// demo7();
6. 运算符、赋值运算符
6.1 字符串与数字计算时候,字符串会自动转换为0
6.2 布尔值与数字计算时候,true会自动转换为1,false为0
6.3 对象与数字计算则报错
6.4 串接字符串
6.5 递增递减
6.6 比较运算符
6.7 逻辑运算符
function demo8() {
$x = 17;
$y = 8;
echo ($x + $y);
echo "<br>";
echo ($x - $y);
echo "<br>";
echo ($x * $y);
echo "<br>";
echo ($x / $y);
echo "<br>";
echo ($x % $y);
echo "<br><hr>";
echo ("AB" - $x); // -17
echo "<br>";
echo ("AB" + $x); // 17
echo "<br>";
echo ("AB" * $x); // 0
echo "<br>";
echo ("AB" / $x); // 0
echo "<br>";
echo ("AB" % $x); // 0
echo "<br>";
echo (true + $x); // 18
echo "<br><hr>";
echo $x."ABDCD";
echo "<br><hr>";
echo ++$x;
echo "<br><hr>";
var_dump($x == $y);
echo "<br><hr>";
var_dump($x && $y);
echo "<br><hr>";
$z = array("a" => "apple", "b" => "banana");
$z2 = array("c" => "orange", "d" => "peach");
$z3 = $z + $z2;
var_dump($z3);
echo "<br>";
var_dump($z == $z2);
echo "<br>";
var_dump($z === $z2);
echo "<br>";
var_dump($z != $z2);
echo "<br>";
var_dump($z <> $z2); //<>表示不等于,与!=功能相同
echo "<br>";
var_dump($z !== $z2);
}
// demo8();
7. 数据结构
7.1 if…elseif…else
7.2 switch
7.3 while: 只要指定条件为真,则循环代码块
7.4 do…while: 先执行一次代码块,然后只要指定条件为真则重复循环
7.5 for(init counter; test counter; increment counter): 循环代码块指定次数
7.6 foreach: 遍历数组中的每个元素并循环代码块
function demo9() {
$t = date("H");
if ($t < "20") {
echo "Have a good day";
} elseif ($t > "22") {
echo $t;
} else {
echo "此时处于20-22点之间";
}
echo "<br>";
$favfruit = "orange";
switch($favfruit) {
case "apple":
echo "错误";
break;
case "banana":
echo "错误";
break;
case "orange":
echo "错误";
break;
default:
echo "默认错误";
}
echo "<br>";
for ($x = 0; $x <= 10; $x++) {
echo "数字是: {$x} <br>";
}
echo $x; // 11,说明是声明在外部的
echo "<br>";
$color = array("red", "green", "yellow");
foreach ($color as $key => $val) {
echo "索引{$key}: {$val} <br>";
}
class Person {
public $name = "king";
public $age = 25;
public $birth;
}
$p = new Person();
$person_arr = get_object_vars($p);
print_r($person_arr);
echo "<br>";
echo var_dump($person_arr["birth"] === NULL);
}
// demo9();
8. 函数
8.1 函数参数可设置默认值
8.2 函数名对大小写不敏感
function demo10() {
function familyName($fname, $year = 20) {
echo "{$fname} Zhang. Born in $year <br>";
return $year;
}
familyName("Li", 10);
familyName("Hong", 120);
echo familyName("Z");
}
// demo10();
9. 数组
9.1 索引数组: 带有数字索引的数组
9.2 关联数组: 带有指定键的数组
9.3 多维数组: 包含一个或多个数组的数组
9.4 count(): 函数获取数组长度
9.5 sort(): 以升序对数组排序
9.6 rsort(): 以降序对数组排序
9.7 asort(): 根据值,以升序对关联数组进行排序
9.8 ksort(): 根据键,以升序对关联数组进行排序
9.9 arsort(): 根据值,以降序对关联数组进行排序
9.10 krsort(): 根据键,以降序对关联数组进行排序
function demo11() {
$cars = array("aa", "bb", "cc");
var_dump($cars);
echo "<br>";
echo count($cars);
echo "<br><hr>";
// 遍历索引数组
$arrlength = count($cars);
for($x = 0; $x < $arrlength; $x++) {
echo "{$cars[$x]}<br>";
}
echo "<br><hr>";
//创建以及遍历关联数组
$ages = array("Bill" => "35", "Steve" => "37", "Elon" => "43");
var_dump($ages);
foreach($ages as $key => $val) {
echo "{$key}: {$val}<br>";
}
echo "<br><hr>";
}
// demo11();
10. 超全局变量
10.1 $GLOBALS: 获取全局变量
10.2 $_SERVER: 保存关于报头、路径和脚本位置的信息
10.3 $_REQUEST: 用于收集 HTML 表单提交的数据
10.4 $_POST: 广泛用于收集提交 method=“post” 的 HTML 表单后的表单数据
10.5 $_GET: 也可用于收集提交 HTML 表单 (method=“get”) 之后的表单数据
10.6 $_FILES: 获取流文件
10.7 $_ENV: 获取全局环境
10.8 $_COOKIE: cookie设置
10.9 $_SESSION: session设置
function demo11() {
$cars = array("aa", "bb", "cc");
var_dump($cars);
echo "<br>";
echo count($cars);
echo "<br><hr>";
// 遍历索引数组
$arrlength = count($cars);
for($x = 0; $x < $arrlength; $x++) {
echo "{$cars[$x]}<br>";
}
echo "<br><hr>";
//创建以及遍历关联数组
$ages = array("Bill" => "35", "Steve" => "37", "Elon" => "43");
var_dump($ages);
foreach($ages as $key => $val) {
echo "{$key}: {$val}<br>";
}
echo "<br><hr>";
}
// demo11();