基础知识:
变量名必须通过$
符号标识
变量的命名规范:
1、变量名必须以字母或下划线 “_”开头,如”$_name”,”$name” ,”$name2”等,但是”$9name”是不对的。
2、变量名只能由字母、数字、以及“_”组成,还能包含汉字。如”$_qq”,”$qq308” ,”$my_apple”,“比如"$name我等”,但是”$name*”是不对的。
3、变量名不允许包含空格。当变量名由多个单词组成,建议使用“_”进行分隔(比如 $my_apple),俗称下划线法,或者以大写字母开头比如 $myApple,俗称骆驼式命名法(也称驼峰命名法
memory_get_usage() 获取当前PHP占用内存
var_dump();获取变量类型
echo("true")结果为1//布尔型变量输出的时候是特殊的,true为1,false什么也不输出
整型:
整型(integer):类似于常见的整数。它可以用十进制、八进制、十六进制指定。十进制就是日常使用的数字;八进制,数字前必须加上“0”(这个0是阿拉伯数字0,可不是英文字母“欧”哦);十六进制,数字前必须加“0x”
字符串型:
1.字符串型可以用三种方法定义:单引号形式、双引号形式和Heredoc结构形式
2.使用字符串的时候难免用到引号之间的嵌套,可以使用转义符“\”
3.当双引号中包含变量时,变量会与双引号中的内容连接在一起;当单引号中包含变量时,变量会被当做字符串输出
4.使用定界符表示字符串(<<<),接着在“<<<“之后提供一个标识符GOD(可以自己定义),然后是字符串,最后以提供的这个标识符结束字符串
特殊类型:
资源(resource):资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。我们可以对资源进行操作(创建、使用和释放)
举例如下:
<?php $file=fopen("f.txt","r"); //打开文件 $con=mysql_connect("localhost","root","root"); //连接数据库 $img=imagecreate(100,100);//图形画布 ?> $a = fopen("打开文件根目录","r");//打开文件$b = fgets($a);//读取文件中的内容$c = fclose($a);//关闭文件 第二种特殊类型:NULL(NULL):NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset()撤销定义,这三种情况下变量被认为为NULL 常量:使用define定义,带有三个参数
bool define(string $constant_name, mixed $value[, $case_sensitive = true])
第一个参数“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致,但是要注意哦,它可不带美元符号哦。第二个参数“value”为必选参数,它是常量的值。第三个参数“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false
系统常量(举例):
1.__FILE__ :php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。
2.__LINE__ :PHP程序文件行数。它可以告诉我们,当前代码在第几行。
3.PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。
4.PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码
获取常量值的有两种方法取值:
1.第一种是使用常量名直接获取值
2.第二种使用constant()函数:mixed constant(string constant_name)
defined(string constants_name)获取当前常量名是否被定义,返回值为布尔型
运算符:
算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符、字符串连接运算符、错误控制运算符
赋值运算符(=和&):
第一个是把右边表达式的值赋给左边的运算数。它将右边表达式值复制一份,交给左边的运算数。换而言之,首先给左边的运算数申请了一块内存,然后把复制的值放到这个内存中。
第二个是引用赋值,意味着两个变量都指向同一个数据。它将使两个变量共享一块内存,如果这个内存存储的数据变了,那么两个变量的值都会发生变化
例如$c = &$a;
比较运算符(!===,===(全等于,要求值与类型都一样),<>(不等于))
逻辑运算符(与,或都有两种,and,or,&&,||,异或Xor(有且仅有一个值为真才为真))!!!优先级不同
连接符:.和.= 前者是将两个字符串连起来,后者是直接在前面字符串后加上一个字符串
错误控制运算符“@”:对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉
!!!需要注意的是:错误控制前缀“@”不会屏蔽解析错误的信息,不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等
PHP(foreach循环分两种:
1.只取值,不取下标
foreach (数组 as 值){ }
2.同时取下标和值
foreach (数组 as 下标 => 值)
进阶知识:
数组的定义: $arr= array();//表示创建一个空数组,并把创建的空数组赋值给变量$arr。
1.索引数组:$fruit = array("苹果","香蕉","菠萝");
注意数组的键是从0开始的。可以使用print_r($fruit);
语句输出数组键及对应的值
第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,索引数组中,中括号内的键一定是整数。比如,$arr[0]=‘苹果‘;
第二种:用array()
创建一个空数组,使用=>
符号来分隔键和值,左侧表示键,右侧表示值。当然,索引数组中,键一定是整数。比如,array(‘0‘=>‘苹果‘);
第三种:用array()
创建一个空数组,直接在数组里用英文的单引号‘
或者英文的双引号"
赋值,数组会默认建立从0开始的整数的键。比如array(‘苹果‘);
这个数组相当于array(‘0‘=>‘苹果‘);
2.关联数组:关联数组是指数组的键是字符串的数组
第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,关联数组中,中括号内的键一定是字符串。比如,$arr[‘apple‘]=‘苹果‘;
第二种:用array()
创建一个空数组,使用=>
符号来分隔键和值,左侧表示键,右侧表示值。当然,关联数组中,键一定是字符串。比如,array(‘apple‘=>‘苹果‘);
自定义函数:
1.使用关键字“function
”开始
2.函数名可以是字母或下划线开头:function name()
3.在大括号中编写函数体
可变函数:可变函数的调用方法为变量名加括号。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
类和对象:
class Car { $name = ‘汽车‘; function getName() { return $this->name; } }
$car = new Car();
echo $car->getName();
//也可以采用变量来创建
$className = ‘Car‘;
$car = new $className();
echo $car->getName();
类的属性:属性默认都为public,外部可以访问。一般通过->对象操作符来访问对象的属性或者方法,对于静态属性则使用::双冒号进行访问
类的方法:使用关键字static修饰的,称之为静态方法,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::
构造函数和析构函数(一个在对象被创建时自动调用,一个在对象被销毁时自动被调用)
//增加构造函数与析构函数
function __construct(){
print "构造函数被调用\n";
}
function __destruct(){
print "析构函数被调用\n";
}
静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名
的方式进行调用。静态属性不允许对象使用->操作符调用
class Car { private static $speed = 10; public static function getSpeed() { return self::$speed; } } echo Car::getSpeed(); //调用静态方法
静态方法也可以通过变量来进行动态调用
$func = ‘getSpeed‘;
$className = ‘Car‘;
echo $className::$func(); //动态调用静态方法重载
对象之重载:
PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。
属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性
clone的作用是拷贝.如$b clone $a.相当于 $b单独开辟了个内存空间,但内容和$a是一模一样的.. 若是 $b=$a,相当于两个指针指向同一个空间.. 即 === 成立
$str = serialize($a); //对象序列化成字符串
$c = unserialize($str); //反序列化为对象
字符串:
单引号与双引号的区别:双引号里面可以识别出变量名,单引号则不行
去掉字符串首尾的空格:
PHP中有三个函数可以去掉字符串的空格
1.trim去除一个字符串两端空格。
2.rtrim是去除一个字符串右部空格,其中的r是right的缩写。
3.ltrim是去除一个字符串左部空格,其中的l是left的缩写
PHP中直接获取英文字符串的长度的函数是strlen(),用mb_strlen()
函数获取字符串中中文长度。
1.英文字符串的截取函数substr()
函数说明:substr(字符串变量,开始截取的位置,截取个数)
2.中文字符串的截取函数mb_substr()
函数说明:mb_substr(字符串变量,开始截取的位置,截取个数, 网页编码)
PHP的查找字符串函数strpos():函数说明:strpos(要处理的字符串, 要定位的字符串, 定位的起始位置[可选])
替换字符串,我们需要用到PHP的替换函数str_replace()
函数说明:str_replace(要查找的字符串, 要替换的字符串, 被搜索的字符串, 替换进行计数[可选])
们需要用到PHP的格式化字符串函数sprintf()
函数说明:sprintf(格式, 要转化的字符串)
返回:格式化好的字符串
例子:
$str = ‘99.9‘; $result = sprintf(‘%01.2f‘, $str); echo $result;//结果显示99.90
字符串的合并和分割
1.合并
php字符串合并函数implode()函数说明:implode(分隔符[可选], 数组),返回值:把数组元素组合为一个字符串
举例:
$arr = array(‘Hello‘, ‘World!‘); $result = implode(‘‘, $arr); print_r($result);//结果显示Hello World!
2.分割
php字符串分隔函数explode(),函数说明:explode(分隔符[可选], 字符串),返回值:函数返回由字符串组成的数组
举例:
$str = ‘apple,banana‘; $result = explode(‘,‘, $str); print_r($result);//结果显示array(‘apple‘,‘banana‘)
php字符串转义函数addslashes(),函数说明:用于对特殊字符加上转义字符,返回一个字符串
Cookie
Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过HTTP headers从服务端返回到客户端
Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个:
1.name( Cookie名)可以通过$_COOKIE[‘name‘] 进行访问
2.value(Cookie的值)
3.expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效
4.path(有效路径)如果路径设置为‘/‘,则整个网站都有效
5.domain(有效域)默认整个域名都有效,如果设置了‘www.imooc.com‘,则只在www子域中有效
PHP中删除cookie也是采用setcookie函数来实现:setcookie(‘test‘, ‘‘, time()-1);
Session
在PHP中使用session非常简单,先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写
使用Session或者Cookie存储用户信息:
<?php
session_start();
//假设用户登录成功获得了以下用户数据
$userinfo = array(
‘uid‘ => 10000,
‘name‘ => ‘spark‘,
‘email‘ => ‘[email protected]‘,
‘sex‘ => ‘man‘,
‘age‘ => ‘18‘
);
header("content-type:text/html; charset=utf-8");
/* 将用户信息保存到session中 */
$_SESSION[‘uid‘] = $userinfo[‘uid‘];
$_SESSION[‘name‘] = $userinfo[‘name‘];
$_SESSION[‘userinfo‘] = $userinfo;
//* 将用户数据保存到cookie中的一个简单方法 */
$secureKey = ‘imooc‘; //加密密钥
$str = serialize($userinfo); //将用户信息序列化
//用户信息加密前
$str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));
//用户信息加密后
//将加密后的用户数据存储到cookie中
setcookie(‘userinfo‘, $str);
//当需要使用时进行解密
$str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB);
$uinfo = unserialize($str);
echo "解密后的用户信息:<br>";
print_r($uinfo);
最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中
UNIX 时间戳(英文叫做:timestamp)它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和。
PHP提供了内置函数strtotime实现功能:获取某个日期的时间戳,或获取某个时间的时间戳:strtotime(要解析的时间字符串, 计算返回值的时间戳【默认是当前的时间,可选】)
GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片
Exception(异常处理)具有几个基本属性与方法,其中包括了:
message 异常消息内容
code 异常代码
file 抛出异常的文件名
line 抛出异常在该文件的行数
PHP数据库扩展:
1.mysql扩展进行数据库连接的方法:
$link = mysql_connect(‘mysql_host‘, ‘mysql_user‘, ‘mysql_password‘);
2.mysqli扩展:
$link = mysqli_connect(‘mysql_host‘, ‘mysql_user‘, ‘mysql_password‘);
3.PDO扩展
$dsn = ‘mysql:dbname=testdb;host=127.0.0.1‘; $user = ‘dbuser‘; $password = ‘dbpass‘; $dbh = new PDO($dsn, $user, $password);