1.变量
①变量以$符号开始,后跟变量名
②以下划线或字母开头
③不能包含特殊符号
④区分大小写
2.变量作用域
①local
②global
③static
④parameter
3.函数外定义的变量为全局变量,是可以在除函数中任何地方访问的。在函数里访问要加global修饰
例如:
function myTest()
{
global $x,$y;
$y=$x+$y;
}
也可以将变量放于globals集合中,直接用来更新全局变量
4.Static作用域
当希望某个局部变量可以重复使用时static修饰
例如:
function show()
{
static $x=0;
echo $x;
$x++;
}
show();
show(); //返回12,该变量将会保留着函数前一次被调用时的值。
5.parameter参数作用域
6.echo和print
① -可以输出一个或多个字符串 ,号间隔的多参
② -输出一个字符,多参报错 成功后返回true
7.数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)
var_dump() 函数返回变量的数据类型和值 (注意是类型和值)
8.对象
①PHP中,对象必须声明
②class关键字声明类对象,类可以包含属性和方法
③在实例化的类中使用数据类型
9.NULL值用来清空变量数据,或比较
10.常量
①常量用define()函数修饰
②常量被定义后,不能再被修改
③任何地方可以使用,常量是全局的,函数内也可以使用
语法:bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
参数:name表示常量名称,必选。value表示常量的值,必选。case_insensitve表示大小写敏感度
11.并置运算符(.)用于吧两个字符串连接起来
12.strlen()函数 -返回字符串的长度 //中文占三个字符
例如: 可以使用 mb_strlen 设置指定编码输出中文字符个数:
echo mb_strlen("中文字符",'utf-8'); // 输出 4
13.strpos()函数 -用于查找字符串的长度 insertof 返回值true/false
14.算术运算符,赋值运算符,递增/递减运算符(++i i++),比较运算符,逻辑运算符,数组运算符,三元运算符,组合比较符
例如:= += -= *= /= %= .= 计算完并赋值
$a = "Hello";
$b = $a . " world!";
echo $b; // 输出Hello world!
$x="Hello";
$x .= " world!";
echo $x; // 输出Hello world!
例如:组合比较符(太空船运算符)
// 整型
echo 1 <=> 1; // 0 左右相等返回0
echo 1 <=> 2; // -1 左小返回-1
echo 2 <=> 1; // 1 左大返回1
// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
在没有太空船运算符的时候,我们只能这样写代码 $c = $a > $b ? 1 : ( $a==$b ? 0 : -1 );
15.=>相当于:冒号
16.PHP_EOL换行符 isset()函数表示判断是否已设置并且非NULL 返回true/false
17.or和||有区别 注意
18.获取数组长度 count() for($x=0;$x<count($arry);$x++)
19.foreach遍历数组
例如:foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
20.数组排序
sort()对数组升序排列
rsort()对数组降序排列
21.php超级全局变量
$globals 包含全部变量的全局组合数组,变量名字是数组的键
$_server 用于查看项目信息
$_request 用于手机表单提交信息
$_post 表单提交方式 method=post
$_get 表单提交方式 method=get
$_files 文件
$_env 环境变量
$_cookie 本地记录
$_session 会话
22.冒泡排序
例如:
$arry=array(2,5,1,8,7);
for($i=0;$i<count($arry)-1;$i++){
for($j=0;$j<count($arry)-$i-1;$j++){
if($arry[$j]<$arry[$j+1]){
$item=$arry[$j];
//注意
$arry[$j]=$arry[$j+1];
$arry[$j+1]=$item;
}
}
}
print_r($arry);
23.魔术变量,可以实时查看信息
例如:
echo '这是第 " ' . __LINE__ . ' " 行'; //line代表当前行号
echo '这是第 " ' . __FILE__ . ' " 行'; //返回文件路径和名称
echo '这是第 " ' . __DIR__ . ' " 行'; //返回目录
echo '这是第 " ' . __FUNCTION__ . ' " 行'; //返回函数名称
echo '这是第 " ' . __CLASS__ . ' " 行'; //返回类名
(注意)__Trait__Trait 名包括其被声明的作用区域。
24.定义命名空间 namespace 名称,命名空间必须是程序脚本的第一条语句
25.OOP 面向对象 (对象的行为 对象的形态 对象的表示)
类: 定义了一件事物的抽象特点,累的定义包含了数据形式以及数据的操作
对象: 类的实例
成员变量: 定义类内部的变量,该变量的值对外是不可见的,但是可以通过成员函数访问,类被对象后,变量为对象属性
成员函数: 定义在类的内部,可用于访问对象数据
继承: 继承性在父类基础上来进行 extends
多态: 方法有多种不同实现
重载: 在同一类中,参数名相同,参数列表不同的方法
构造函数: 初始化对象调用的方法
析构函数: 销毁对象调用的函数
类的变量用var来声明,也可初始化
初始化函数用function __函数名
parent::__construct()调用父类构造函数
26.定义变量并默认设置为空值
$name = $email = $gender = $comment = $website = "";
27.表单提交
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars()函数把一些预定义的字符串转换为HTML实体
28.PHP empty()函数 bool empty( mixed var )
例子:<?php
$var = "";
if(empty($var)){
echo '变量 $var 为空';
} else {
echo '变量 $var 不为空';
}
?>
29.正则验证 pre_match("正则",变量);如果匹配返回true 不匹配返回false
"/([\w\-]+\@[\w\-]+\.[\w\-]+)/" 邮箱格式
"/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i" URL地址格式
30.请求
①.method="get"
1.参数和值对显示在地址栏中
2.get请求值不能超过2000字符3.
不适合大型变量,不推荐使用
②.method="post"
1.发送信息不可见
2.携带内容不限制大小
31.多维数组包含一个或多个数组的数组或者自动分配ID键的多维数组 <pre>自动划分行
例如:$sites = array(
"arry1"=>array
(
"php基础入门"
),
"arry2"=>array
(
"java基础入门"
)
)
32.date()函数 函数可把时间戳格式化为可读性更好的日期和时间
时间戳是一个字符序列,表示一定事件发生的日期/时间
语法:string date(string $format[,int $timestamp])
format 必需。规定时间戳的格式
timestamp 可选。规定时间戳。默认是当前的日期和时间
date()格式化日期 可用的字符(d-代表月中的天(01-31),m-(代表月01-12),Y-代表年(四位数))
33.PHP中include和require语句,用于在执行流中插入写在其他文件中的有用代码
语法:
include 'filename';
require 'filename';
区别:生成错误不同
require生成一个致命错误,错误发生,程序停止运行
include生成一个警告,在错误发生后脚本会继续执行
注意:如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性
34.文件处理
fopen()函数用于打开文件
$file=fopen("welcom.txt","r"); //第一个参数是绝对路径,例如D:/read.txt
例:
<?php
$file = fopen("welcome.txt", "r") or exit("无法打开文件!");
// 读取文件每一行,直到文件结尾
while(!feof($file))
{
echo fgets($file). "<br>";
}
fclose($file);//关闭打开的文件
?>
feof($file)检测文件末尾(EOF)
fgetc($file)逐字读取文件
35.拓展小知识 csv文件
PHP对逗号分隔符文件(*.csv)的处理
处理数据较少时可以使用csv文件(这是一类文本文件)存储数据更便利
比如在php代码同目录下有一个a.csv文件,内容(逗号是英文)
小王,小红,小明
<?php
$fh=fopen("a.csv","r");//这里我们只是读取数据,所以采用只读打开文件流
$arr=fgetcsv($fh);//这个函数就是读取CSV文件的函数,他把文本读入后转为数组存储在$arr中
fcloase($fh);
foreach($arr as $key=>$value){echo $value;}//循环输出所有的值
?>
36.文件上传
注意事项:<form>标签的enctype属性规定了在提交表单时使用哪种类型
<input>标签type="file"属性规定了应该把输入作为文件处理。
$_FILES["file"]["name"] - 上传文件的名称
$_FILES["file"]["type"] - 上传文件的类型
$_FILES["file"]["size"] - 上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码
37.Cookie是什么?
cookie常用于识别用户,cookie是服务器留在本地文件,可以创建和获取
创建cookie:setcookie()函数
语法:setcookie(name,value,expire,path,domain)
expire存活时间,可以通过time()+3600或time()-3600设置
****** 注意:setcookie()函数必须位于<html>标签之前 ******
创建完cookie后存放于php超级集合中 可通过$_COOKIE["名称"]调用
time()返回自1970年至今的的秒数
38.PHP session机制 ,session用于储存用户会话信息,会话期间页面共享
Session工作机制:Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。
开始PHP Session 开启前需要启动会话 同样必须位于<html>标签之前
<?php session_start(); ?>
注意:session配置 session.use_trans_sid参数被设为零 后面页面无法追踪前一个session
销毁Session 用unset()或session_destroy()函数
unset()销毁指定 session_destroy()销毁所有 重置session
39.检测服务是否开启
if(extension_loaded('openssl')){
echo "已开启";
}else{
echo "未开启";
}
echo phpinfo()显示php.ini配置
40.E-mail安全验证
使用PHP过滤器对输入进行验证:
FILTER_SANITIZE_EMAIL 过滤器从字符串中删除电子邮件的非法字符
FILTER_VALIDATE_EMAIL 过滤器验证电子邮件地址的值
41.错误处理
1.die()语句
例如:
<?php
if(file_exists("read.txt"))
{
$file=fopen("read.txt","r");
}
else
{
die("文件不存在!");
}
?>
2.自定义错误和错误触发器
<?php
function customError($errno,$errstr) //错误处理函数
{
echo "<b>Error:</b>[$errno] $errstr";
}
//设置错误处理函数
set_error_handler("customError");
//触发错误,主动出错
echo ($test) //输出:Error: [8] Undefined variable: test
?>
触发错误函数:trigger_error("错误信息!");//并主动显示出错行号
3.错误报告
说白了,系统出错时,通过调用邮件像邮箱发送错误新消息。
42.异常
1.跟java异常机制大致相同,写法细节点不同
2.可以自定义异常
3.子类异常在前父类异常在后
4.使用try{}catch{}
43.JSON
1.需要内置JSON拓展
JSON函数()
json_encode 对变量JSON编码。
json_decode 对JSON格式的字符串进行解码,转换为PHP变量
json_last_error 返回最后发生的错误
json_encode转json之后 中文会编程Unicode编码
避免样例:
$arr = array ('a'=>urlencode('脚本之家')); //urlencode
echo urldecode(json_encode($arr)); //urldecode 绕过转码
json_decode转回php变量
var_dump(json_decode($json));
var_dump(json_decode($json, true)); //当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。
44.Mysql,Mysqli,Pdo三种方式连接数据库
mysql是php最原始的extension(延长),php-mysqli的i代表improvement(改善)
就extension而言,增强了安全性
而PDO是提供了abstraction layer(抽象层)来操作数据库
mysql是非持链接函数而mysqli是永远链接函数。也就是说mysql每次打开都会打开一个连接进程而mysqli将使用同一连接进程,从而减少开销
mysqli的开启需要更改php.ini配置文件
详细看:http://blog.csdn.net/u010973051/article/details/50820905
PDO的优势:
1:PDO真正的以底层实现的统一接口数据库操作接口
2.PDO支持更高级的DB特性操作
3.PDO是PHP官方的PECL库,兼容性高于mysql
45.PHP获取激活码
http://idea.lanyus.com/
46.单条插入数据
mysqli:
第一种:
$conn=new mysqli($servername,$username,$password,$dbname);
//检测连接
if($conn->connect_error){
die("连接失败:".$conn->connect_error);
}
$sql="sql语句";
if($conn->query($sql)===TRUE){ //query插入方法
echo "新纪录插入成功!";
}else{
echo "Error:".$sql."<br>".$conn->error;
}
$conn->close();
第二种:
$conn=mysqli_connect($servername,$username,$password,$dbname);
//检测连接
if(!$conn){
die("连接异常信息:".mysqli_connect_error());
}
$sql="sql语句";
if(mysqli_query($conn,$sql)){ //mysqli_query方法
echo "插入成功!";
}else{
echo "Error:".$sql."<br>".mysqli_error($conn);
}
mysqli_close($conn); //关闭方法不一
PDO方式:
try{
$conn=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password);
//设置PDO错误模式,用于抛出异常
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql="sql语句";
//使用exec(),没有结果返回
$conn->exec($sql);
echo "新纪录插入成功!";
}
catch(PDOExcetion $e){
echo $sql."<br>".$e->getMessage();
}
$conn=null;
47.插入多条数据
mysqli_connect插入多行mysqli_multi_query
new mysqli插入多行用mysqli->multi_multi_query();
$conn->beginTransaction(); //开启事务
$conn->commit(); //提交事务
$conn->rollback(); //回滚事务
48.预处理语句可以房主SQL注入
预处理优点:
1.预处理语句大大减少了分析时间。
2.绑定参数减少了服务器带宽,只需要发送查询参数。
3.预处理语句针对SQL注入
mysqli预处理:insert 表名 values(?,?,?); //问号是占位符
$stmt = $conn->prepare("INSERT INTO MyGuests VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
// 设置参数并执行
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute(); //执行方法
PDO预处理:
1.拿连接
2.设置错误模式
3.放置预处理SQL $stmt=$conn->prepare(SQL语句); insert 表 value(fir:name)
4.绑定参数 $stmt->bindParam(':firstname',$firstname);
5.执行添加方法
49.PHP对于XML Expat的解析 7步骤
1.通过xml_parser_create()函数初始化XML解析器
2.创建不同事件处理函数
3.添加xml_set_element_handler()函数来定义,解析器遇到开始和结束标签时执行哪个函数,例如xml_set_element_handler($parser,"start","stop");
4.添加xml_set_character_data_handler()函数定义,当解析器遇到字符数据时执行哪个函数
5.通过xml_parse()函数来解析文件
6.xml_error_string()函数把XML错误转换为文本说明
7.调用xml_parser_free()函数来释放分配给xml_parser_create()函数的内存
50.XML DOM解析
例子:
<?php
$xmlDoc=new DOMDocument(); //创建DOM对象
$xmlDoc->load("note.xml"); //load加载
print $xmlDoc->saveXML(); //解析输出
?>
51.SimpleXML 解析
<?php
$xml=simplexml_load_file("note.xml");
print_r($xml);
echo $xml->to."<br>"; //输出XML中每个元素的数据
echo $xml->from."<br>";
?>
//输出每个子节点的元素名称和数据
<?php
$xml=simplexml_load_file("note.xml");
echo $xml->getName() . "<br>";
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br>";
}
?>
52.AJAX ajax是一种无需重新加载整个网页的情况下,能够更新部分网页的技术。
ajax是一种用于创建快速动态网页的技术。