PHP 基本概念
PHP 是一种嵌入式脚本语言,它基于Zend 引擎。
PHP 数据类型可以分为三种:
标量数据类型:
布尔型、字符串、整数、浮点。
(Integer、Float、String或Boolean)
记忆口诀:如果(if) sb,就是“标 ”。
可以通过is_scalar()函数判断一个变量是否为标量,如果一个变量通过is_scalar()函数判断得到值为1,那么说明该变量是标量;如果输出为空,那么说明该变量不是标量。
复合数据类型:
数组、对象
特殊数据类型:
资源类型、NULL
一个标量数据只能存放一个数据,而复合数据可以存放多个数据。
PHP 版本差别
5.2 以前的版本:autoload、PDO和mysqli ,类型约束、Json支持
5.3 新增匿名函数、魔术方法、命名空间、后期静态绑定、heredoc、const、三元运算符等。
5.4 新增ShortOpenTag、数组简写形式、Traits、内置Web服务器。
5.5 新增yield、list()用户foreach。
5.6 新增常量增强、可变函数参数、命名空间增强。
7.0
新增
空合并运算符、
变量类型声明、
返回值类型声明、
太空船操作符
PHP 7 新增加的太空船运算符(组合比较符)用于比较两个表达式 $a 和 $b,如果 $a 小于、等于或大于 $b时,它分别返回-1、0或1。
匿名类、Unicode codepoint 转译语法、Closure::call()、为unserialize() 提供过滤、IntIChar、预期、Group use declarations 等新特性。
返回类型声明指定的一个函数返回值的类型。
int
float
bool
string
interfaces
array
callable
对象实例
例如:
create方法的返回值必须为一个User类实例;delete方法的返回值必须是布尔数据类型。
7.1 版本 新增可控类型、list的方括号简写、循序在list中指定key、void返回类型、类常量属性设定、多条件catch等新特性。
PHP 如何安装拓展
windows 上两种方式
把拓展编译进PHP
加载DLL文件
一段脚本如何裁断彻底终止
当执行到文件结尾时。
define和const的区别
const可在类中使用,
用于类成员常量定义(在php5.3.0以后,可以使用const关键字在类定义的外部定义常量),定义后不可修改,
const在类内定义常量,那么const必须通过类名::变量名来进行访问;
define不能在类中使用,可用于全局变量
在实际开发过程中,常量主要用于值被定义后就不能被修改或覆盖的地方。具体而言,主要用于以下几个地方:
1)操作连接数据库的信息定义成常量,例如连接数据库时数据库的用户名、密码、数据库名、主机名等。
2)将站点的相同路径部分定义成常量,例如Web绝对路径,smarty的安装路径,model、view或者controller的文件夹路径。
3)网站的公共信息定义成常量,例如网站名称、网站关键词、网站描述、网站作者等信息。
FILE 返回的是绝对路径,如果这个魔术常量所在的文件被其他文件引用,那么扔人会返回原文件路径,而不是其他文件的路径。获取类的方法用魔术变量__METHOD__,获取类的名称用魔术变量__CLASS__
isset 、empty 和is_null 的区别
图片
总结一下,就是empty 遇到空的和假的,都判断为TURE。
is_null 和isset 对偶,功能上相似,但是isset是语句,is_null是函数,isset 检测速度更快,并且不会出notice提醒。 isset 检测null 值和未定义变量更好,他只会检测出这两种情况,判断为false,empty 则是能认为是空的就都判断为空,整型0 和字符串0 都会被判断成 空,
具体判断情况,参考博客园的文章《empty和isset的区别》表格
switch 语句
switch (expression)
{
case label1:
expression = label1 时执行的代码 ;
break;
case label2:
expression = label2 时执行的代码 ;
break;
default:
表达式的值不等于 label1 及 label2 时执行的代码;
}
什么是 php的闭包
PHP 的闭包
匿名函数
提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它。声明一个匿名函数是这样:
$func = function() {
}; //带结束符
可以看到,匿名函数因为没有名字,如果要使用它,需要将其返回给一个变量。匿名函数也像普通函数一样可以声明参数,调用方法也相同:
$func = function( $param ) {
echo $param;
};
$func( 'some string' );
//输出:some string
顺便提一下,PHP在引入闭包之前,也有一个可以创建匿名函数的函数:create function,但是代码逻辑只能写成字符串,这样看起来很晦涩并且不好维护,所以很少有人用。
实现闭包
将匿名函数在普通函数中当做参数传入,也可以被返回。这就实现了一个简单的闭包。
PHP 抽象类和接口的区别
参考文章
115.2 abstract和interface 的区别等
类中的self 和static的区别在于,static 调用的永远是子类的 静态变量的值,而 self 是看你在哪里调用的,在子类中调用的就是子类的值,在父类中调用的就是父类的值。
在php中使用oracle 数据库作为数据库服务,在PDO中加载PDO_OCI 作为驱动程序。
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
这些函数都用来操作数组单元,
sort() 从低到高进行排序。
rsort() 从高到低进行排序。(这个r可能就是reverse的意思)
asort() 函数用于对数组单元从低到高进行排序并保持索引关系。
php在线执行工具
尝试的例子:
<?php
$array = [
"sex_dist",
"age_dist",
"proplevel_dist",
"education_dist",
"occupation_dist",
"comptype_dist",
"hascar_dist",
"married_dist",
"phone_brand_dist",
"apptype_dist",
"active_shangquan_dist",
"pmnt_shangquan_dist",
"home_aoi_dist",
"comp_aoi_dist",
"pmnt_prov_dist",
"active_city_dist",
"pmnt_city_dist",
"offline_brand_dist",
"shop_poi_dist",
"entertain_poi_dist",
"tplv1_brand_dist",
"food_poitype_dist",
"phone_model_dist",
"phone_os_dist",
"apptype_period_dist",
"wkd_drive_dist",
"hld_drive_dist",
"wkd_bus_dist",
"hld_bus_dist",
"wkd_subway_dist",
"hld_subway_dist",
"wkd_taxi_dist",
"hld_taxi_dist",
"wkd_bike_dist",
"hld_bike_dist",
"high_shop_dist",
"high_sport_dist",
"high_hotel_dist"];
asort($array);
foreach ($array as $value) {
echo $value.',';
}
?>
arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。
ksort() 函数用于对数组单元按照键名从低到高进行排序。
krsort() 函数用于对数组单元按照键名从高到低进行排序。
比较字符串最好使用strcmp() 这个函数,这个函数是二进制安全的,且对大小写敏感。
参考书籍:
[1] PHP 求职宝典
[2] PHP 底层设计与源码实现