1.单引号和双引号区别
单引号串和双引号串在PHP中的处理是不相同的。双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符
举例看下:
$foo = 2;
echo “foo is $foo”; // 打印结果: foo is 2
echo ‘foo is $foo’; // 打印结果: foo is $foo
echo “foo is $foo\n”; // 打印结果: foo is 2 (同时换行)
echo ‘foo is $foo\n’; // 打印结果: foo is $foo\n
$foo = 2;
echo “foo is $foo”; // 打印结果: foo is 2
echo ‘foo is $foo’; // 打印结果: foo is $foo
echo “foo is $foo\n”; // 打印结果: foo is 2 (同时换行)
echo ‘foo is $foo\n’; // 打印结果: foo is $foo\n
2.变量作用域
1.局部变量local:它的作用域为函数定义范围内
2.全局变量global:它的作用域从定义处一直到文件结尾
global关键字
3.静态作用域static
4.参数作用域
3.常量
设置常量时要用define()函数
3.const定义常量和define()定义的区别
用法一:const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义,const可在类中使用,define不能。
用法二:const定义的常量大小写敏感,而define可通过第三个参数(为TRUE表示大小写不敏感)来指定大小写是否敏感。在运行时定义一个常量。define(‘TXE’,100,TRUE);
用法三:const不能在条件语句中定义常量,而define函数可以。if($a>10){define(‘LE’,‘hello’);}
->和=>区别
foreach as的遍历
函数记录
1.reset() 函数把数组的内部指针指向第一个元素,并返回这个元素的值。
2.sprintf():把格式化的字符串写入一个变量中
语法为:sprintf(format,arg1,arg2,arg++);
3…strpos() f函数查找字符串在另一字符串中第一次出现的位置(区分大小写)
4.intval() 函数用于获取变量的整数值。
5.ucfirst():把 “hello” 的首字符转换为大写:
6.get_class (): 获取当前调用方法的类名;
get_called_class():获取静态绑定后的类名;
7.explode 把字符串打散为数组:
implode(’,’,$arr):把数组打印成字符串
8.array_pop — 弹出数组最后一个单元(出栈)
9.extension_loaded()函数表示检查一个扩展是否成功加载例如 if(!extension_loaded(‘sysvmsg’))
10.require(),语句的性能与 include() 相类似,都是包括并运行指定文件。
10.strrchr() 函数:::搜索 “Shanghai” 在字符串中的位置,并返回从该位置到字符串结尾的所有字符:
echo strrchr(“I love Shanghai!”,“Shanghai”);//shanghai!
11.strtolower() 函数:把所有字母转为小写
12.strval 用于获取变量的字符串值。
13.list函数:list() 函数用于在一次操作中给一组变量赋值。
14.curl_init():用于初始化一个cURL会话,返回一个cURL句柄,供curl_setopt(), curl_exec()和curl_close() 函数使用
16.addslashes():在每一个双引号前面加一个斜杠
17.rtrim()函数:从字符串的右侧开始移除字符串
18.array_merge()函数:将一个或者多个数组合并。
19.strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
20.pathinfo():以数组的形式返回关于文件路径的信息。
21 .mt_rand()函数用于返回随机的整数:mt_rand(min,max):
22.json_encode()函数
23:mt_rand() 函数
24.constant解析字符串等到常量值
25.call_user_func_array()函数可以按照传进来的函数名和参数去调用另外一个函数
- array_column返回输入数组中指定列的值:
27.array_diff()
static::用法
self 和 this区别
self调用的是类,而$this调用的则是实例化的对象。
PHP的魔术方法
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __serialize(), __unserialize(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被称为魔术方法(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。
PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀。
例如:__call( $method,
a
r
g
a
r
r
a
y
)
当
调
用
一
个
未
定
义
的
方
法
是
调
用
此
访
求
;
这
里
的
未
定
义
的
方
法
包
括
没
有
权
限
访
问
的
方
法
,
在
调
用
时
指
明
方
法
名
参
数
arg_array ) 当调用一个未定义的方法是调用此访求;这里的未定义的方法包括没有权限访问的方法,在调用时指明方法名参数
argarray)当调用一个未定义的方法是调用此访求;这里的未定义的方法包括没有权限访问的方法,在调用时指明方法名参数method,$arg_array 指定的方法名的方法参数
PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在或被权限控制中的方法,__call 方法将会被自动调用。
__toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串
两个问号??
a
?
?
0
等
同
于
i
s
s
e
t
(
a ?? 0 等同于 isset(
a??0等同于isset(a) ? $a : 0。
$a ?: 0 等同于 $a ? $a : 0。
{变量名}的作用
有些场景有没有{}无所谓
例如:
有些就必须要用{}
.=的作用
//.=通俗的说,就是累积。
//比如:
$a = ‘a’; //赋值
$b = ‘b’; //赋值
$c = ‘c’; //赋值
$c .= $a;
$c .= $b;
echo $c; 就会显示 cab
一下划线和加两下划线区别
一个下横线为私有
两个下横线为系统默认,例如那些魔术方法
二维和三维数组
二维:
三维:
use和trait 两个关键字解决单继承问题
php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性,
用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Trait的声明使用Trait关键词,Trait不能实例化