PHP知识点

Posted maps..xy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP知识点相关的知识,希望对你有一定的参考价值。

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-]+)/"  邮箱格式

"/(?:(?: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 = "[email protected]";
$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是一种用于创建快速动态网页的技术。







































































































































































































































































































































































































以上是关于PHP知识点的主要内容,如果未能解决你的问题,请参考以下文章

php高级面试题知识点(转载)

PHP的知识点总结1

个人学习 php 语言的相关知识点目录

01_PHP 基础知识

PHP基础知识点汇总

PHP基础知识点汇总