代码格式
PHP标记符< ?php.....?>
- php代码都要写在标记符内
与html的混写:标记符外可写html代码
注意:
- 每句代码以 ; 结束
- PHP对所有用户定义的函数、类和关键词(if、else、echo)都对大小写不敏感
- 如:
echo "hello word"
、ECHO "hello word"
、EchO "hello word"
等价
- 如:
- PHP对所有变量都大小写敏感
- 如
$color
、$Color
、$COLOR
是三个不同的变量
- 如
输出:
- echo:不属于函数。输出一个或多个字符串,在网页中输出内容,
- 如:输出
echo 'helloword'
- 实现换行
echo "< br/>";
- 如:输出
- var_dump():输出代码内容,结构与类型。该函数作可以窥探所有内容的类型,以及内部信息。该函数是调试、打印、输出、展示类型函数。
- 如
var_dump($a1);
- 如
die()
输出结果,结束脚本,是exit()
另一种形式
注释
//
或/*....*/
或#
常量
有效的常量名以字符或下划线开头(常量名称前面没有$符号)
与变量不同,常量贯穿整个脚本是自动全局的
设置PHP常量
- 使用define()函数 - 它有三个参数
- 首个参数定义常量的名称
- 第二个参数定义常量的值
- 第三个参数规定对常量名是否大小写不敏感,默认是false
- 如:
<?php define("GREETING","Welcome to beijin")?>
- 如:
- 常量命名规则
- 作用域是全局的,自动全局
- 常量类似变量,但常量一旦被定义就无法更改或撤销定义
- 通过
define()
函数定义 - 以字符或下划线开头
- 值只能是标量boolean、integer、float、string这几种类型
define()
代码运行时才定义常量const()
代码运行前就会定义好常量
变量
命名变量必须以 $
开头,如 $a1;
变量名必须以字母或下划线开头
赋值、传值、传址
- 赋值:
$a = 360;
- 传值:
$a = 360;$b = $a
- 改变一个变量的值,另一个变量的值不会改变
- 传址:
$a = 360;$b = &$a
- 改变一个变量的值,影响另一个变量的值
表达式
任何有值的东西
数据类型
int型 $a1 = 1;
float型 $a2 = 1.5
bool型 $a3 = true;
字符串型
$a4 = 'string123';
$a5 = "string123";
PHP的单引号和双引号
- 解析字符内容
- 双引号中的变量会经过编译器解析
- 单引号中的变量不会被解析
- 如
<?php $test = "hello";echo "$test";?>
输出结果为hello
<?php $test = "hello";echo '$test'?>
输出结果为$test
- 如
- 字符转义
- 双引号内使用
可以转义字符,单引号中的内容不会
- 如
<?php echo "hello "word" ";?>
输出结果为hello "word"
<?php echo 'hello "word" ';?>
输出结果为hello "word"
- 如
- 双引号内使用
数据类型的转换
- (int) + 值 将值强制转换为整数
- (float) + 值 返回值强制转换为浮点值
- (字符串) + 值 返回值强制转换为字符串
- (bool) + 值 返回值强制转换为布尔值
- (数组) + 值 返回值强制转换为数组
- (对象) + 值 返回值转换为对象
数组(键+值)
$a6 = [1,2,3,4];
$a7 = array(1,2,3);
- 类型
-
关联数组(手动定义键名)
$arr1 = [
'a' => 1,
'b' => 2,
'c' => 3,
-
索引数组(自动生成键名)
-
- 操作
- 增
$arr1['d'] = 4;
- 删
unset($arr1['c']);
- 改
*$arr1['a'] = 6666;
- 查
echo $arr1['a'];
- 增
对象
$a8 = new stdClass;
无
$a9 = null;
运算符
赋值 =
加等 +=
点号.
字符串拼接
- 如
$a = 1;
$b = "bbb";
$a . $b
结果为 1bbb
点等 .=
- 如
$a = aaa;
$a .= "bbb";
结果为 aaabbb
等于号 ==
不等号 <>
或 !=
绝对等于 ===
判断 数值 和 数据类型 是否相同
绝对不等于 !==
逻辑与 and
或&&
逻辑或 or
或||
逻辑非 !
预定义变量
语言中不需要人为定义的变量,如 $_GET
,$_POST
流程控制
条件
- if、elseif、else
- switch(...){csae..:..}
循环
- for(...;...;...){....}
- 遍历对象和数组:
- foreach(数组名 as
$key
或$value
){...}
- foreach(数组名 as
- while
- do..while
- continue
函数
定义的函数必须以function开头
- 如 function name(){
...;
}
函数的调用
- 如 name();
系统函数(内置函数)
函数中的参数
- 如
name($a,$b);
函数的返回值 return 只能返回一个值
函数一般不直接返回具体信息,而是返回true 或 false
局部变量和全局变量
php 中全局变量不能在函数中使用
- (c语言中是可以的)
如$a1 = 1;
function name(){
echo $a1;
}
是错误的
类与对象
语法类似c语言中的结构体
定义类 通过class定义
-
如 class name{
...
} -
定义类属性 变量
-
如 class name{ public $s1 = 0; public $s2 = 1; }
-
-
定义类方法 函数
-
如 class name{ public function s1(){ echo 's1'; } public function s2(){ echo 's2'; } }
-
定义对象 通过new定义
-
如
$name = new name();
//根据name类 实例化对象 -
调用对象属性
- 如
echo $name->s1;
- 如
-
调用对象方法
- 如
echo $name->s1();
//加个括号表示方法区别于属性
- 如
$this
- 用来在类的方法的内部调用自己的兄弟
-
如 class name{ public function s1(){ $this->s2(); //此处调用 } public function s2(){ echo 's2'; } }
-
常见的魔术方法
- public function __construct(){ //有两个下划线
echo 123;
}
不需要手动调用,在实例化对象后,会自动执行 - __construct: 在创建对象时候初始化对象,一般用于对变量赋初值。
- __destruct: 和构造函数相反,当对象所在函数调用完毕后执行。
- __toString:当该对象被echo时就会调用该魔术方法
- __sleep:序列化对象之前就调用此方法(其返回需要一个数组)
- __wakeup:反序列化恢复对象之前调用该方法
- __call:当调用对象中不存在的方法会自动调用该方法。
- __get:在调用私有属性的时候会自动执行
- __isset()在不可访问的属性上调用isset()或empty()触发
- __unset()在不可访问的属性上使用unset()时触发
包含文件
include("文件名");
include_once();
require();
require_once();
数据的发送与接收
注:html 客户端发送数据,php服务器端接收数据
POST
-
html的表单< form>.....< /form> 必须有 name属性
如 < form action = "formsave.php" method = "POST">
< input type = "text" name = "aa"/>
< /form> -
定义 :接收数据的地址 action 和提交表单的方式 method
如 < form action = "formsave.php" method = "POST">...< /form> -
服务器端 使用对应的 $_POST 数组来接收
GET
-
html的表单< form>.....< /form> 必须有 name属性
如 < form action = "formsave.php" method = "GET">
< input type = "text" name = "aa"/>
< /form> -
定义 :接收数据的地址 action 和提交表单的方式 method
如 < form action = "formsave.php" method = "GET">...< /form> -
服务器端 使用对应的 $_GET 数组来接收
-
GET方式中数据可直接在网址中传输
如:http://127.0.0.1/formsave.php?aa=32&bb=66
网页会显示 aa=32 bb=66
php中执行mysql
连接到数据库
$db = new mysqli($host,$user,$pwd,$dbname);
执行sql
$db->query('MySql语句');
-
如
$db->query('INSERT INTO msg(content,user,intime) VALUES(11,22,33)');
-
$db->query()
的返回值,成功返回 true,失败返回 false -
$db->query('SET NAMES UTF8')
设置连接数据库的编码类型
-
网站的BS结构:
PHP在服务器上执行,执行结果是html,将html发往客户端的浏览器
PHP数据接收变量$_GET
、$_POST
、$_REQUEST
区别
$_GET
预定义的$_GET
变量用于收集来自method="get"
的表单中的值。
从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。- 注:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。
$_POST
变量
预定义的$_POST
变量用于收集来自method="post"
的表单中的值。从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。- 注:默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。
$_REQUEST
变量
预定义的$_REQUEST
变量包含了$_GET
、$_POST
和$_COOKIE
的内容。
$_REQUEST
变量可用来收集通过 GET 和 POST 方法发送的表单数据。
$_REQUEST
变量既可以收集GET方法发送的数据,也可以接受POST方法接受的数据。