PHP
基础语法
PHP 脚本在服务器上执行,然后向浏览器发送回纯 HTML 结果。
PHP 脚本可放置于文档中的任何位置。
PHP 脚本以 * 开头,以 ?> 结尾:
<?php
// 此处是 PHP 代码
?>
-
PHP 文件的默认文件扩展名是 “.php”。
-
PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码。
-
在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感。
PHP 变量
正如代数,PHP 变量可用于保存值(x=5)和表达式(z=x+y)。
变量的名称可以很短(比如 x 和 y),也可以取更具描述性的名称(比如 carname、total_volume)。
PHP 变量规则:
- 变量以 $ 符号开头,其后是变量的名称
- 变量名称必须以字母或下划线开头
- 变量名称不能以数字开头
- 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
- 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
**注释:**PHP 变量名称对大小写敏感!
PHP 没有创建变量的命令。
变量会在首次为其赋值时被创建
PHP是一门类型松散的语言,PHP会根据它的值,自动把变量转换为正确的数据类型
PHP 变量作用域
在 PHP 中,可以在脚本的任意位置对变量进行声明。
变量的作用域指的是变量能够被引用/使用的那部分脚本。
PHP 有三种不同的变量作用域:
- local(局部)
- global(全局)
- static(静态)
Local 和 Global 作用域
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
下面的例子测试了带有局部和全局作用域的变量:
<?php
$x=5; // 全局作用域
function myTest() {
$y=10; // 局部作用域
echo "<p>测试函数内部的变量:</p>";
echo "变量 x 是:$x"; //null
echo "<br>";
echo "变量 y 是:$y"; //10
}
myTest();
echo "<p>测试函数之外的变量:</p>";
echo "变量 x 是:$x"; //5
echo "<br>";
echo "变量 y 是:$y"; //null
?>
x 是没有输出的,因为 x 是作用在全局里的,在函数里并不能输出
y 是作用在函数里的 ,在函数里可以输出,但是在局外并不能作用
注释:您可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被在其中创建它的函数识别。
PHP global 关键词
global 关键词用于在函数内访问全局变量
要做到这一点,请在(函数内部)变量前面使用 global 关键词:
<?php
$x=5;
$y=10;
function myTest() {
global $x,$y; //global 关键词用于在函数内访问全局变量
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
PHP 同时在名为==$GLOBALS[index]==的数组中存储了所有的全局变量。
下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。
<?php
$x=5;
$y=10;
function myTest() {
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y; // 输出 15
?>
PHP static 关键词
通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。
要完成这一点,请在您首次声明变量时使用 static 关键词:
<?php
function myTest() {
static $x=0;
echo $x;
$x++;
}
myTest(); //0
myTest(); //1
myTest(); //2
?>
预定义变量
预定义变量: 提前定义的变量,系统定义的变量,存储许多需要用到的数据(预定义变量都是数组)
$GLOBALS 用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)
$_SERVER 保存关于报头、路径和脚本位置的信息(服务器信息)
$_REQUEST GET和POST提交的都会保存
$_POST POST提交的数据都会保存在此
$_GET 获取所有表单以get方式提交的数据
$_FILES 用户上传的文件信息
$_ENV 环境信息
$_COOKIE cookie会话数据
$_SESSION session会话数据
$GLOBALS
引用全局作用域中可用的全部变量
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
下面的例子展示了如何使用超级全局变量 $GLOBALS:
<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
输出:100
$_SERVER
$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。
下面的例子展示了如何使用 $_SERVER 中的某些元素:
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
输出:
/example/php/demo_php_global_server.php
www.w3school.com.cn
www.w3school.com.cn
https://www.w3school.com.cn/tiy/s.asp?f=demo_php_global_server
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36 Edg/85.0.564.63
/example/php/demo_php_global_server.php
下表列出了您能够在 $_SERVER 中访问的最重要的元素:
元素/代码 | 描述 |
---|---|
$_SERVER[‘PHP_SELF’] | 返回当前执行脚本的文件名。 |
$_SERVER[‘GATEWAY_INTERFACE’] | 返回服务器使用的 CGI 规范的版本。 |
$_SERVER[‘SERVER_ADDR’] | 返回当前运行脚本所在的服务器的 IP 地址。 |
$_SERVER[‘SERVER_NAME’] | 返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。 |
$_SERVER[‘SERVER_SOFTWARE’] | 返回服务器标识字符串(比如 Apache/2.2.24)。 |
$_SERVER[‘SERVER_PROTOCOL’] | 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。 |
$_SERVER[‘REQUEST_METHOD’] | 返回访问页面使用的请求方法(例如 POST)。 |
$_SERVER[‘REQUEST_TIME’] | 返回请求开始时的时间戳(例如 1577687494)。 |
$_SERVER[‘QUERY_STRING’] | 返回查询字符串,如果是通过查询字符串访问此页面。 |
$_SERVER[‘HTTP_ACCEPT’] | 返回来自当前请求的请求头。 |
$_SERVER[‘HTTP_ACCEPT_CHARSET’] | 返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1) |
$_SERVER[‘HTTP_HOST’] | 返回来自当前请求的 Host 头。 |
$_SERVER[‘HTTP_REFERER’] | 返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。 |
$_SERVER[‘HTTPS’] | 是否通过安全 HTTP 协议查询脚本。 |
$_SERVER[‘REMOTE_ADDR’] | 返回浏览当前页面的用户的 IP 地址。 |
$_SERVER[‘REMOTE_HOST’] | 返回浏览当前页面的用户的主机名。 |
$_SERVER[‘REMOTE_PORT’] | 返回用户机器上连接到 Web 服务器所使用的端口号。 |
$_SERVER[‘SCRIPT_FILENAME’] | 返回当前执行脚本的绝对路径。 |
$_SERVER[‘SERVER_ADMIN’] | 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。 |
$_SERVER[‘SERVER_PORT’] | Web 服务器使用的端口。默认值为 “80”。 |
$_SERVER[‘SERVER_SIGNATURE’] | 返回服务器版本和虚拟主机名。 |
$_SERVER[‘PATH_TRANSLATED’] | 当前脚本所在文件系统(非文档根目录)的基本路径。 |
$_SERVER[‘SCRIPT_NAME’] | 返回当前脚本的路径。 |
$_SERVER[‘SCRIPT_URI’] | 返回当前页面的 URI。 |
$_REQUEST
PHP $_REQUEST 用于收集 HTML 表单提交的数据。
下面的例子展示了一个包含输入字段及提交按钮的表单。
当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 标签的 action 属性中指定的脚本文件。
在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_REQUEST['fname'];
echo $name;
?>
</body>
</html>
$_POST
$_POST 广泛用于收集提交 method=“post” 的 HTML 表单后的表单数据。
$_POST 也常用于传递变量。
下面的例子展示了一个包含输入字段和提交按钮的表单。
当用户点击提交按钮来提交数据后,表单数据会发送到 标签的 action 属性中指定的文件。在本例中,我们指定文件本身来处理表单数据。
如果您希望使用另一个 PHP 页面来处理表单数据,请用更改为您选择的文件名。然后,我们可以使用超全局变量 $_POST 来收集输入字段的值:
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_POST['fname'];
echo $name;
?>
</body>
</html>
$_GET
PHP $_GET 也可用于收集提交 HTML 表单 (method=“get”) 之后的表单数据。
$_GET 也可以收集 URL 中的发送的数据。
假设我们有一张页面含有带参数的超链接:
<html>
<body>
<a href="test.php?subject=PHP&web=W3school.com.cn">测试 $GET</a>
</body>
</html>
在test.php中的代码:
<html>
<body>
<?php
echo "在 " . $_GET['web'] . " 学习 " . $_GET['subject'];
?>
</body>
</html>
可变变量
如果一个变量保存的值刚好是另一个变量的名字,那么可以直接通过访问一个变量得到另外一个变量的值:在变量前面再多加一个$ 符号。
<?php
$a = 'b';
$b ='bb';
echo $a; //b
echo "<br>";
echo $$a; //bb
?>
变量传值
概念:将一个变量赋值给另一个变量
变量传值一个有两种方式:值传递,引用传递
值传值:将变量保存的值复制一份,然后将新的值给另外一个变量保存(两个变量没有关系)
引用传递:将变量保存的值所在的内存地址,传递给另外一个变量:两个变量指向同一块内存空间
//值传递
$a = 10;
$b = $a;
$b = 5;
echo $a,$b,"<br>";
输出:10 5
//引用传递
$c = 10;
$d = &$c;
$c = 5;
echo $c,$d,"<br>";
输出:5 5
PHP 常量
常量是单个值的标识符(名称)。在脚本中无法改变该值。
有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。
**注释:**与变量不同,常量贯穿整个脚本是自动全局的。
设置常量
如需设置常量,请使用 define() 函数 - 它使用三个参数:
-
首个参数定义常量的名称
-
第二个参数定义常量的值
-
可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。
格式:define(" “,” ");
<?php
define("Demo","Hello World!");
echo Demo;
?>
输出:Hello World!
系统常量
系统常量:系统帮助用户定义的常量,用户可以直接使用
常用的几个系统变量
- PHP_VERSION : PHP版本号
- PHP_INT_SIZE : 整形大小
- PHP_INT_MAX : 整形能表示的最大值 (PHP中整形是允许出现负数的:带符号)
魔术常量
语法:双下划线开始 + 常量名 + 双下划线结束
魔术常量的值会跟着环境变化,但是用户改变不了。有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
LINE
__LINE__
文件中的当前行号。
实例:
<?php
echo '这是第 " ' . __LINE__ . ' " 行';
?>
//这是第 “ 2 ” 行
FILE
__FILE__
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
当前被执行的脚本所在电脑的绝对路径(带自己文件的名字)
实例:
<?php
echo '该文件位于 " ' . __FILE__ . ' " ';
?>
//该文件位于 " E:\AppServ\www\wordbench\program\test.php "
(每个人配置的电脑文件位置不一样)
DIR
__DIR__
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)
当前被执行的脚本所在电脑的绝对路径。
实例:
<?php
echo '该文件位于 " ' . __DIR__ . ' " ';
?>
//该文件位于 " E:\AppServ\www\wordbench\program "
FUNCTION
__FUNCTION__
函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
实例:
<?php
function test() {
echo '函数名为:' . __FUNCTION__ ;
}
test();
?>
//函数名为:test
CLASS
__CLASS__
类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。
在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
实例:
<?php
class test {
function _print() {
echo '类名为:' . __CLASS__ . "<br>";
echo '函数名为:' . __FUNCTION__ ;
}
}
$t = new test();
$t->_print();
?>
//
类名为:test
函数名为:_print
TRAIT
__TRAIT__
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。
Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。
其行为 MyHelloWorld 类中定义的方法一致。
优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。
实例:
<?php
class Base {
public function sayHello() {
echo 'Hello ';
}
}
trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
class MyHelloWorld extends Base {
use SayWorld;
}
$o = new MyHelloWorld();
$o->sayHello();
?>
//Hello World!
METHOD
__METHOD__
类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
实例:
<?php
function test() {
echo '函数名为:' . __METHOD__ ;
}
test();
?>
//函数名为:test
NAMESPACE
__NAMESPACE__
当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
实例:
<?php
namespace MyProject;
echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
?>
//命名空间为:"MyProject"
数据类型
数据类型:data type,在PHP中指的是数据本身的类型,而不是变量的类型。PHP是一种弱类型语言,变量本身没有数据类型。
类型转换
很多情况需要指定数据类型,需要将外部数据类型(当前PHP获得的数据)转换成目标数据类型。
两种转化方式:
1、自动转化:系统根据自己的需求判断,自己转化(用的较多、但效率较低)。
2、强制转换(手动):在变量之前增加一个(),并在括号里面写上对于的类型,其中NULL特殊,需用unset。
转换说明:
1、以字母开头的字符串,永远为0;
2、以数字开头的字符串,取到碰到字符串为止。(不会同时包含两个小数点)
<?php
// 数据类型
// 创建数据
$a = 'abcd1.1.1';
$b = '1.1.1abc';
// 自动转换。算术运算,系统先转化为数值类型,然后运算
echo $a+$b; // 结果为1.1(0+1.1)
// 强制转换
echo '<br/>',(float)$a,(float)$b; // 01.1
类型判断
通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据的数据类型(相同结果为true,失败为false):是一组以is_开头后面跟类型名字的函数:is_XXX(变量名)
var_dump
输出展示展示代码内容,结构与类型。该函数作可以窥探所有内容的类型,以及内部信息
Bool 类型不能用echo来查看,可以使用var_dump结构查看
Var_dump(变量1,变量2...)
<?php
$a = 'abcd1.1.1';
$b = '1.1.1abc';
// 类型判断
var_dump(is_int($a)); // bool(FALSE)
var_dump(is_string($a)); // bool(TRUE)
?>
Gettype
还有一组函数可以用来获取以及设定数据(变量)的类型
Gettype(变量名):获取类型,得到的是该类型对应的字符串
<?php
$a = 'abcd1.1.1';
$b = '1.1.1abc';
// 自动转换。算术运算,系统先转化为数值类型,然后运算
echo $a+$b; // 结果为1.1(0+1.1)
// 强制转换
echo '<br/>',(float)$a,(float)$b; // 01.1
// 获取数据类型
echo '<hr/>';
echo gettype($a); // string(虽然前面强制转换了,但并未改变本身)
?>
settype
settype(变量名,类型):设定数据类型:与强制转换不同。
1、强制转换(类型)变量名,是对数据值复制的内容进行处理(不会处理实际存储的内容)
2、settype会直接改变数据本身
<?php
$a = 'abcd1.1.1';
$b = '1.1.1abc';
// var_dump 输出展示展示代码内容,结构与类型。该函数作可以窥探所有内容的类型,以及内部信息
var_dump(settype($b,'int')); // 先将字符串转换为int型,转换成功返回true,var_dump判断是否为bool型,故显示 bool(true)
echo gettype($b),$b; // interger1
?>
进制转换
php中提供了很多函数进行转换:
Decbin():十进制转二进制
Decoct():十进制转八进制
Dechex():十进制转十六进制
Bindec():二进制转十进制
var_dump(decbin(107)); // 结果:string(7) "1101011"
运算符
运算符:是一种将数据进行运算的特殊符号,在PHP中一共有十多种运算符。
算术运算符
比较运算符
// 算术运算符 + - * / %
// 比较运算符 > >= < <= == (数据大小相同即可,无需考虑数据数据类型) !=
===(全等于,大小及数据类型均等) !==
$a = '123'; // 字符串
$b = 123; // 整型
var_dump($a == $b); // 结果: bool(true)
var_dump($a === $b); // 结果: bool(false) 不全等于
逻辑运算符
// c &&(左边条件与右边条件同时成立) ||(有一个满足即可) !(取反)
$c = 'weekend';
$d = 'goods';
var_dump($c == 'weekend' && $d == 'good'); // bool(false)
var_dump($c == 'weekend' && $d == 'good'); // bool(true)
var_dump(!($c == good); // bool(true)
连接运算符
// 连接运算符 .(将字符串连接一起) .=(将左边内容与右边内容连接起来并重新赋值)
$e = 'hello';
$f = 123;
echo $e . $f; // hello 123(注意,此处有强制类型转换)
$e .= $e;
echo $e; // hello 123
错误抑制符
// 错误抑制符:@(可能出错的表达式),在PHP中有一些错误可以提前预知,但又不想报错,这就需要错误抑制符。
$g = 0;
echo $f % $g; // 此时会报错
echo @($f % $g); // 不会报错
三目运算符
// 三目运算符(问号表达式) 表达式1 ? 表达式2:表达式3
echo $g ==0?1:2;
自操作运算符
// 自操作运算符 ++ --(前置或后置如果只有自操作,则效果一致)
$i = $g++; // $g = 1; $i = 0
$i = ++$g; // $g = 2; $i = 2;
位运算符
// 位运算符
/*
计算机码:计算机在实际存储数据时,采用的编码规则(二进制规则)
计算机码:原码、反码和补码。数值本身最左边一位用来充当符号位:正数为0,负数为1;
原码:数据本身从十进制转换成二进制得到的结果
正数,左符号位为0 负数:右符号位为1
反码:针对负数,符号位不变,其他位取反。
补码:针对负数,反码+1.(系统中存的为补码)
以0为例,若是原码,则+0 = 00000000 -0 = 10000000;二者不一样
-0 反码 11111111 -0 补码 00000000 与+0一样(正数原码、补码、反码为其本身)。
*/
$j = 5; // 原码:00000101
$k = -5; // 原码:10000101 反码:11111010 补码:11111011
位运算
// 位运算:取出计算机中最小的单位(bit)进行运算 & | ~(按位取反) ^(按位异或) >>(右移) <<(左移)
// 注:1、系统进行位运算时,均是利用补码进行运算的 2、运算结束之后,必须转换为原码进行显示
// 按位取与
var_dump($j & $k); // int(1)
/* 5 00000101
-5 11111011
& 00000001 判断:符号位为0,正数,所存即为原码,无需操作
*/
// 按位取反
var_dump(~ $k); // int(4)
/*
-5 11111011
~ 00000100 正数即为原码,
*/
// 按位左移
var_dump($k >> 1) // int(-3)
var_dump($k >> 2) // int(-2)
/*
-5 11111011
>>2 11111110(右移补符号位)
反码 11111101(补码-1)
原码 10000010(除符号位均取反)
*/
PHP 数组
组成
数组在一个变量中存储多个值。
在PHP中,数组是一个可以存储一组或一系列数据的变量,而数组中的数据称之为数组元素
由于数组是有数组元素组成的,而数组中的元素又分为两部分,分别为键和值。
“键”是数组元素的识别名称,也被称为数组下标。
“值”为数组元素的内容。
“键”和值之间使用“=>”连接。
数组各个元素之间使用逗号“,”分割。
最后一个元素后面的逗号可以省略
分组
PHP中的数组根据下标的数据类型,分为索引数组和关联数组。
索引数组是指下标为整型的数组,默认下标从0开始,也可自己指定。
关联数组是指下标为字符串的数组
$arr[3] = 'C语言'; //索引数组
$arr[‘sub’] = 'C++‘; //关联数组
创建
在使用数组前,首先需要定义数组,PHP中通常使用如下两种方式定义数组:
方式1:使用赋值方式定义数组;
方式2:使用array()函数定义数组。
(1)一维数组的创建,方式1
赋值方式定义数组:创建一个数组变量,使用赋值运算符直接给变量赋值。
$arr[] = 'PHP'; //存储结果:$arr[0] = 'PHP'
$arr[] = 'Java'; //存储结果:$arr[1] = 'Java'
$arr[3] = 'C语言'; //存储结果:$arr[3] = 'C语言'
$arr[5] = 'C++'; //存储结果:$arr[5] = 'C++'
$arr['sub'] = 'IOS'; //存储结果:$arr['sub'] = 'IOS'
$arr[] = '网页平面'; //存储结果:$arr[6] = '网页平面'
当不指定数组的“键”时,默认“键”从“0”开始,依次递增。
当其前面有用户自己指定索引时,PHP会自动的将前面最大的整数下标加1,作为该元素的下标。
(2)一维数组的创建,方式2
array()函数定义数组:将数组的元素作为参数,各元素间使用逗号“,”分割
在下面的例子中,我们将测试不同的数组。PHP var_dump() 会返回变量的数据类型和值:
$info = array('id'=>1,'name'=>'Tom');
$fruit = array(1=>'apple',3=>'pear');
$num = array(1,4,7,9);
$mix = array('tel'=>110,'help',3=>'msg');
(3)二维数组的创建,方式1
$students["2010001"]=
array("studentNo"=>"2020001","studentName"=>"张三","studentSex"=>"男");
$students["2010002"]=
array("studentNo"=>"2020002","studentName"=>"李四","studentSex"=>"女");
$students["2010003"]=
array("studentNo"=>"2020003","studentName"=>"王五","studentSex"=>"男");
print_r($students);
var_dump($students);
$students=array(
"2010001"=>array("studentNo"=>"2020001","studentName"=>"张三","studentSex"=>"男"),
"2020002"=>array("studentNo"=>"2020002","studentName"=>"李四","studentSex"=>"女"),
"2010003"=>array("studentNo"=>"2020003","studentName"=>"王五","studentSex"=>"男")
);
var_dump($students);
echo $students["2010002"]["studentName"];
访问
由于数组中的元素是由键和值组成的,而键又是数组元素的唯一标识,因此可以使用数组元素的键来获取该元素的值。
$info = array('id'=>1,'name'=>'Tom');
echo $info['name']; //输出结果:Tom
PHP提供了print_r()和var_dump()函数,专门用于输出数组中的所有元素。
-
lprint_r()函数可以按照一定的格式显示数组的键和值。
-
var_dump()函数不仅具有print_r()函数的功能,还可以获取数组中元素的个数和数据类型。
删除
unset()函数既可以删除数组中的某个元素,又可以删除整个数组。
$fruit = array('apple','pear');
unset($fruit[1]);
print_r($fruit); //输出结果:Array ( [0] => apple )
unset($fruit);
print_r($fruit); //输出结果:Notice: Undefined variable: fruit...
遍历
在操作数组时,依次访问数组中每个元素的操作称为数组遍历。在PHP中,通常使用foreach()语句遍历数组。
$fruit = array('apple','pear‘,’grape’);
foreach($fruit as $key => $value){
echo $key.'---'.$value.' ’;
}
-
foreach语句后面的()中的第一个参数是待遍历的数组名字
-
foreach语句后面的()中的第二个参数$key表示数组元素的键。
-
foreach语句后面的()中的第三个参数$value表示数组元素的值
$fruit = array('apple','pear‘,’grape’);
foreach($fruit as $key => $value){
echo $key.'---'.$value.' ’;
}
------------------------------------
foreach($fruit as $value){
echo $value.' '; //输出结果:apple pear
}
二维数组的遍历
$students=array(
array("studentNo"=>"2020001","studentName"=>"张三","studentSex"=>"男"),
array("studentNo"=>"2020002","studentName"=>"李四","studentSex"=>"女"),
array("studentNo"=>"2020003","studentName"=>"王五","studentSex"=>"男")
);
foreach ($students as $values){
foreach($values as $v){
echo $v.'<p>'; }
}
<?php
$cars=array("Volvo","BMW","SAAB");
var_dump($cars);
?>
输出:array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(4) "SAAB" }
PHP 对象
对象是存储数据和有关如何处理数据的信息的数据类型。
在 PHP 中,必须明确地声明对象。
首先我们必须声明对象的类。对此,我们使用 class 关键词。类是包含属性和方法的结构。
然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型:
<?php
class Car
{
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
?>
PHP NULL 值
特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。
NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。
可以通过把值设置为 NULL,将变量清空:
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
//NULL
PHP 函数
strlen() 函数
strlen() 函数返回字符串的长度,以字符计。
下例返回字符串 “Hello world!” 的长度:
<?php
echo strlen("Hello world!"); //代码的输出是:12
?>
- 注意:strlen() 常用于循环和其他函数,在确定字符串何时结束很重要时。(例如,在循环中,我们也许需要在字符串的最后一个字符之后停止循环)。
对字符串中的单词计数
PHP str_word_count() 函数对字符串中的单词进行计数:
<?php
echo str_word_count("Hello world!"); // 输出 2
?>
反转字符串
PHP strrev() 函数反转字符串:
<?php
echo strrev("Hello world!"); // 输出 !dlrow olleH
?>
strpos() 函数
strpos() 函数用于检索字符串内指定的字符或文本。
如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE。
下例检索字符串 “Hello world!” 中的文本 “world”:
<?php
echo strpos("Hello world!","world");
?>
MYSQL
连接数据库
1.建立、关闭与MySQL服务器的连接
1)连接指定的mysql服务器
$mysqli_connect=@mysqli_connect($host, $user, $password,$database,$port);
2)连接错误时的提示
int mysqli_connect_errno ();//返回最后一次连接调用的错误代码
string mysqli_connect_error ();//返回一个字符串描述的最后一次连接调用的错误代码
3)设置默认字符编码
bool mysqli_set_charset ( mysqli $link , string $charset )
4)选择特定的数据库
bool mysqli_select_db ( mysqli $link , string $dbname);
5)关闭与mysql服务器的连接
bool mysqli_close ( mysqli $link );
完整代码:
<?php
//连接mysql
$link=$mysqli_connect=mysqli_connect('localhost','root','123456');
//检查是否连接错误
if(mysqli_connect_errno()){
var_dump(mysqli_connect_error());
}else{
echo "数据库连接成功";
}
//设置默认字符编码
mysqli_set_charset($link, 'utf8');
//选择数据库
mysqli_select_db($link,'ustb');
执SQL语句
1)对数据库执行一条SQL语句
mixed mysqli_query (mysqli $link,string $query [,int $resultmode =MYSQLI_STORE_RESULT]);
①对于insert,update,delete等不会返回数据的SQL语句,在执行没有错误时将返回true。
②对于返回数据的SQL语句执行成功的时候会返回结果集对象可以使用操作结果集对象的函数来从中获取数据
2)操作结果集对象的函数
1>从结果集对象中解析数据的常见函数
①以索引数组的方式获取一条记录的数据
mixed mysqli_fetch_row ( mysqli_result $result ); // 重复使用以获取下一条记录的数据
②以关联数组的方式获取一条记录的数据
array mysqli_fetch_assoc ( mysqli_result $result );//重复使用以获取下一条记录的数据
③以索引数组或关联数组的方式获取一条记录的数据
mixed mysqli_fetch_array ( mysqli_result $result [, int $resulttype = MYSQLI_BOTH ] );
// 重复使用以获取下一条记录的数据
//第二个参数可选值:MYSQLI_ASSOC,MYSQLI_NUM,MYSQLI_BOTH(默认)
④以索引数组或关联数组的方式获取全部记录的数据
mixed mysqli_fetch_all ( mysqli_result $result [, int $resulttype = MYSQLI_NUM ] );
⑤返回结果集中的下一个字段信息
object mysqli_fetch_field ( mysqli_result $result );//重复使用获取下一个字段
⑥返回一个代表结果集字段的对象数组
array mysqli_fetch_fields ( mysqli_result $result );
⑦获取结果中行的数量
int mysqli_num_rows ( mysqli_result $result );
//注意:如果使用MYSQLI_USE_RESULT模式则必须在获取完结果集才可使用该函数。
2>释放与一个结果集相关的内存
返回的结果集在数据量很大的时候需要很多的内存支持,所以在操作完结果集的时候有必要立刻释放与一个结果集相关的内存, 释放之后,结果集就不可用了
void mysqli_free_result ( mysqli_result $result );
代码:
//执行sql语句
echo "<pre>";
//var_dump(mysqli_query($link, "insert into user values('小成成','5201314','123456@qq.com')"));//增加一条语句
$result = mysqli_query($link,"select * from user");
//var_dump(mysqli_fetch_row($result));//以索引数据获取数据
//var_dump(mysqli_fetch_assoc($result));//以关联数组获取数据
//var_dump(mysqli_fetch_array($result,mysqli_NUM));
//var_dump(mysqli_fetch_all($result));//以索引数组或关联数组的方式获取全部记录的数据
//var_dump(mysqli_fetch_field($result));//重复使用获取下一个字段
//var_dump(mysqli_fetch_fields($result));
//var_dump(mysqli_free_result($result));//释放与一个结果集相关的内存
var_dump(mysqli_num_rows($result));
注:此乃黄敢敢夜观各大网站视频所学即得笔记,如有雷同,请联系我进行删除!阿里嘎多
又注:还没写完笔记哟,同步更新