一、 数学函数
1.abs(): 求绝对值 求绝对值
$abs = abs(-4.2);
输入:任意数字
输出结果:4.2(数字绝对值数字)
2.ceil(): 进一法取整 进一法取整
echo ceil(9.999);
输入:任意数字
输出结果:10(浮点数进一取整)
3.floor(): 舍去法取整 舍去法取整
echo floor(9.999);
输入:任意数字
输出结果:9(浮点数直接舍去小数部分)
4.fmod(): 浮点数取余 浮点数取余
$x = 5.7;
$y = 1.3; // 两个浮点数,x>y 浮点余数
r
=
f
m
o
d
(
r = fmod(
r=fmod(x, $y);
输出结果:0.5(5.7/1.3=4···0.5)
5.pow(): 返回数的 n 次方 次方
echo pow(-1, 20);
输出结果:1(基础数|n 次方乘方值)
6.round(): 浮点数四舍五入 浮点数四舍五入
echo round(1.95583, 2);
输出结果:1.96(一个数值|保留小数点后多少位,默认为 0 舍入后的结果)
7.sqrt(): 求平方根 求平方根
echo sqrt(9);
输出结果:3(被开方的数平方根)
8.max(): 求最大值 求最大值
echo max(1, 3, 5, 6, 7);
输入: 多个数字或数组
输出结果:7(返回其中的最大值)
9.min(): 求最小值 求最小值
echo min(1, 3, 5, 6, 7);
输入: 多个数字或数组
输出结果:1(返回其中的最小值)
10.mt_rand(): 更好的随机数 更好的随机数
echo mt_rand(0,9);
输入: 最小|最大,
输出: 随机数随机返回范围内的值
11.rand(): 随机数 随机数
echo rand(0,9);
输入: 最小|最大,
输出: 随机数随机返回范围内的值
12.pi(): 获取圆周率值 获取圆周率值
echo pi();
输出结果:3.1415926535898…
二、 去空格或或其他字符: :
13.trim(): 删除字符串两端的空格或其他预定义字符 删除字符串两端的空格或其他预定义字符
KaTeX parse error: Can't use function '\r' in math mode at position 8: str = "\̲r̲\nHello World!\…str);
输入: 目标字符串
输出结果:Hello World!(清除后的字符串)
14.rtrim(): 删除字符串右边的空格或其他预定义字符 删除字符串右边的空格或其他预定义字符
KaTeX parse error: Undefined control sequence: \n at position 19: …=”Hello World !\̲n̲\n”; echo rtrim…str);
输入: 目标字符串
输出结果:Hello World!(清除后的字符串)
15.chop(): rtrim()的别名 的别名
16.ltrim(): 删除字符串左边的空格或其他预定义字符 删除字符串左边的空格或其他预定义字符
KaTeX parse error: Can't use function '\r' in math mode at position 8: str = "\̲r̲\nHello World!"…str);
输入: 目标字符串
输出结果:Hello World!(清除后的字符串)
17.dirname(): 返回路径中的目录部分 返回路径中的目录部分
echo dirname(“c:/testweb/home.php”);
输入: 一个包含路径的字符串
输出结果:C:/testweb(返回文件路径的目录部分)
三、 字符串生成与转化
18.str_pad(): 把字符串填充为指定的长度 把字符串填充为指定的长度
s
t
r
=
"
H
e
l
l
o
W
o
r
l
d
"
;
e
c
h
o
s
t
r
p
a
d
(
str = "Hello World"; echo str_pad(
str="HelloWorld";echostrpad(str,20,".");
输入: 要填充的字符串|新字符串的长度|供填充使用的字符串, 默认是空白
输出结果: Hello World…(完成后的字符串)
19.str_repeat(): 重复使用指定字符串 重复使用指定字符串
echo str_repeat(".",13);
输入:要重复的字符串|字符串将被重复的次数
输出结果:… (13 个点)
20.str_split(): 把字符串分割到数组中 把字符串分割到数组中
print_r(str_split(“Hello”));
输入: 要分割的字符串|每个数组元素的长度,默认 1
输出结果: Array ( [0] => H [1] => e [2] => l [3] => l [4] => o )(拆分后的字符串数组)
21.strrev(): 反转字符串 反转字符串
echo strrev(“Hello World!”);
输入:需要翻转的字符串
输出结果: !dlroW olleH(目标字符串颠倒顺序后的字符串)
22.wordwrap(): 按照指定长度对字符串进行折行处理 按照指定长度对字符串进行折行处理
s
t
r
=
"
A
n
e
x
a
m
p
l
e
o
n
a
l
o
n
g
w
o
r
d
i
s
:
S
u
p
e
r
c
a
l
i
f
r
a
g
u
l
i
s
t
i
c
"
;
e
c
h
o
w
o
r
d
w
r
a
p
(
str = "An example on a long word is:Supercalifragulistic"; echo wordwrap(
str="Anexampleonalongwordis:Supercalifragulistic";echowordwrap(str,15);
输入: 目标字符串|最大宽数
输出结果: An example on a long word is:Supercalifragulistic(折行后的新字符串)
23.str_shuffle(): 随机地打乱字符串中所有字符 随机地打乱字符串中所有字符
echo str_shuffle(“Hello World”);
输入: 目标字符串顺序
输出: 打乱后的字符串
24.parse_str(): 将字符串解析成变量 将字符串解析成变量
parse_str(“id=23&name=John%20Adams”,
m
y
A
r
r
a
y
)
;
p
r
i
n
t
r
(
myArray); print_r(
myArray);printr(myArray);
输入: 要解析的字符串|存储变量的数组名称
输出: Array( [id] => 23 [name] => John Adams)
25.number_format(): 通过千位分组来格式化数字 通过千位分组来格式化数字
echo number_format(20000000000);
输入: 要格式化的数字|规定多少个小数|规定用作小数点的字符 串|规定用作千位分
隔符的字符串
输出: 20,000,000,000
四、 大小写转换
26.strtolower(): 字符串转为小写 字符串转为小写
echo strtolower(“Hello WORLD!”);
输入:目标字符串
输出结果:hello world!(全部小写字符串)
27.strtoupper(): 字符串转为大写 字符串转为大写
echo strtoupper(“Hello WORLD!”);
输入:目标字符串
输出结果: HELLO WORLD! (全部 大写字符串 )
28.ucfirst(): 字符串首字母大写 字符串首字母大写
echo ucfirst(“hello world”);
输入:目标字符串
输出结果:Hello world(字符串首个字母大写)
29.ucwords(): 字符串每个单词首字符转为大写 字符串每个单词首字符转为大写
echo ucwords(“hello world”);
输出结果:Hello World(每个单词的首写字母都大写)
五、l html 标签关联
30.htmlentities(): 把字符转为 HTML 实体 实体
KaTeX parse error: Expected 'EOF', got '&' at position 13: str = "John &̲ 'Adams'"; echo…str, ENT_COMPAT);
输出结果:John & ‘Adams’
31.htmlspecialchars(): 预定义字符转 html 编码 编码
s
t
r
=
"
T
h
i
s
i
s
s
o
m
e
<
b
>
b
o
l
d
<
/
b
>
t
e
x
t
.
"
;
e
c
h
o
h
t
m
l
s
p
e
c
i
a
l
c
h
a
r
s
(
str = "This is some <b>bold</b> text."; echo htmlspecialchars(
str="Thisissome<b>bold</b>text.";echohtmlspecialchars(str);
输出结果:This is some bold text.
32.nl2br(): \n 转义为 转义为 标签
echo nl2br(“One line.\nAnother line.”);
输出结果: One line.
Another line.( 处理后的字符串 )
33.strip_tags(): 去 剥去 HTML 、XML 及 以及 PHP 的标签 的标签
echo strip_tags("Hello world! ");
输出结果:Hello world!
34.addcslashes():在指定的字符前添加反斜线转义字符串中字符 在指定的字符前添加反斜线转义字符串中字符
s
t
r
=
"
H
e
l
l
o
,
m
y
n
a
m
e
i
s
J
o
h
n
A
d
a
m
s
.
"
;
e
c
h
o
a
d
d
c
s
l
a
s
h
e
s
(
str = "Hello, my name is John Adams."; echo addcslashes(
str="Hello,mynameisJohnAdams.";echoaddcslashes(str,‘m’);
输入: 目标字符串|指定的特定字符或字符范围
输出结果:Hello,\my na\me is John Ad\ms.
35.stripcslashes(): 删除由 addcslashes()添加的反斜线 添加的反斜线
echo stripcslashes(“Hello, \my na\me is Kai Ji\m.”);
输入:目标字符串
输出结果:Hello, my name is Kai Jim.
36.addslashes(): 指定预定义字符前添加反斜线 指定预定义字符前添加反斜线
s
t
r
=
"
W
h
o
′
s
J
o
h
n
A
d
a
m
’
s
?
"
;
e
c
h
o
a
d
d
s
l
a
s
h
e
s
(
str = "Who's John Adam’s?"; echo addslashes(
str="Who′sJohnAdam’s?";echoaddslashes(str);
输出结果: Who’s John Adam’s? (把目标串中的’ " \和 null 进行转义处理)
37.stripslashes(): 删除由 addslashes()添加的转义字符 添加的转义字符
echo stripslashes(“Who’s John Adams?”);
输出结果:Who’s John Adams?(清除转义符号)
38.quotemeta(): 在字符串中某些预定义的字符前添加反斜线 在字符串中某些预定义的字符前添加反斜线
s
t
r
=
"
H
e
l
l
o
w
o
r
l
d
.
(
c
a
n
y
o
u
h
e
a
r
m
e
?
)
"
;
e
c
h
o
q
u
o
t
e
m
e
t
a
(
str = "Hello world. (can you hear me?)"; echo quotemeta(
str="Helloworld.(canyouhearme?)";echoquotemeta(str);
输出结果:Hello world. (can you hear me?)
39.chr(): 的 从指定的 ASCII 值返回字符 值返回字符
echo chr(052);
输出结果: *( ASCII 值返回对应的字符 )
40.ord(): 返回字符串第一个字符的 ASCII 值 值
echo ord(“hello”);
输出结果:104(字符串第一个字符的 ASCII 值)
六、 字符串比较
41.strcasecmp(): 不区分大小写比较两字符串 不区分大小写比较两字符串
echo strcasecmp(“Hello world!”,“HELLO WORLD!”);
输入: 两个目标字符串
输出结果:0(如果两个字符串相等,0|如果 string1 小于 string2,小于 0|如果 string1 大
于 string2,大于 0)
42.strcmp(): 区分大小写比较两字符串 区分大小写比较两字符串
echo strcmp(“Hello world!”,“Hello world!”);
输入:两个目标字符串
输出结果:0(如果两个字符串相等,0|如果 string1 小于 string2,小于 0|如果 string1 大
于 string2,大于 0)
43.strncmp(): 比较字符串前 n 个字符,区分大小写 区分大小写
echo strncmp(“Hello world!”,“Hello earth!”,6);
输入:两个比较的字符串和指定的比较长度
输出结果:0(如果两个字符串相等,0|如果 string1 小于 string2,小于 0|如果 string1
大于 string2,大于 0)
44.strncasecmp(): 比较字符串前 n 个字符,不区分大小写 不区分大小写
echo strncasecmp(“I love China!”,“i LOVE Shanghai!”,6);
输入:两个比较的字符串和指定的比较长度
输出结果:0(如果两个字符串相等,0|如果 string1 小于 string2,小于 0|如果 string1
大于 string2,大于 0)
45.strnatcmp(): 自然顺序法比较字符串长度,区分大小写 区分大小写
echo strnatcmp(“2Hello world!”,“10Hello world!”);
输入: 目标字符串
输出结果:-1(如果两个字符串相等,0|如果 string1 小于 string2,小于 0|如果 string1
大于 string2,大于 0)
46.strnatcasecmp(): 自然顺序法比较字符串长度, 不区分大小写 不区分大小写
echo strnatcasecmp(“10Hello world!”,“2Hello WORLD!”);
输入目标:输入: 目标字符串
输出结果:1(如果两个字符串相等,0|如果 string1 小于 string2,小于 0|如果 string1
大于 string2,大于 0)
七、 字符串切割与拼接
47.chunk_split():将字符串分成小块 :将字符串分成小块
s
t
r
=
"
S
h
a
n
g
h
a
i
"
;
e
c
h
o
c
h
u
n
k
s
p
l
i
t
(
str = "Shanghai"; echo chunk_split(
str="Shanghai";echochunksplit(str,1,".");
输入: 目标字串,长度,插入结束符
输出: S.h.a.n.g.h.a.i.(分割后的字符串)
48.strtok(): 切开字符串 切开字符串
$string = “Hello world. Beautiful day today.”;
t
o
k
e
n
=
s
t
r
t
o
k
(
token = strtok(
token=strtok(string, " ");
输入:目标字符串
输出结果:Hello
world.
Beautiful
day
today(以$token 为标志切割返回切割后的字符串)
49.explode(): 使用一个字符串为标志分割另一个字符串 使用一个字符串为标志分割另一个字符串
s
t
r
=
"
H
e
l
l
o
w
o
r
l
d
.
I
l
o
v
e
S
h
a
n
g
h
a
i
!
"
;
p
r
i
n
t
r
(
e
x
p
l
o
d
e
(
"
"
,
str = "Hello world. I love Shanghai!"; print_r (explode(" ",
str="Helloworld.IloveShanghai!";printr(explode("",str));
输入: 分割符,目标字符串,返回数组最多包含元素数
输出: Array ( [0] => Hello [1] => world. [2] => I [3] => love [4] => Shanghai! )(字符串被分割
后形成的数组)
50.implode(): 同 同 join,将数组值用预订字符连接成字符串 将数组值用预订字符连接成字符串
a
r
r
=
a
r
r
a
y
(
′
H
e
l
l
o
′
,
′
W
o
r
l
d
!
′
,
′
I
′
,
′
l
o
v
e
′
,
′
S
h
a
n
g
h
a
i
!
′
)
;
e
c
h
o
i
m
p
l
o
d
e
(
"
"
,
arr = array('Hello','World!','I','love','Shanghai!'); echo implode(" ",
arr=array(′Hello′,′World!′,′I′,′love′,′Shanghai!′);echoimplode("",arr);
输入:分隔符,用””则直接相连
输出结果:Hello World! I love Shanghai!
51.substr(): 截取字符串 截取字符串
echo substr(“Hello world”,6);
输入:目标字符串,开始下标位置(下标从 0 开始)
输出结果:world
八、 字符串查找替换
52.str_replace(): 字符串替换操作,区分大小写 区分大小写
echo str_replace(“world”,“Shanghai”,“Hello world!”);
输入: 查找的字符串,替换的字符串,被查找字串
输出: Hello Shanghai(返回替换后的结果)
53.str_ireplace() 字符串替换操作,不区分大小写 不区分大小写
echo str_ireplace(“WORLD”,“Shanghai”,“Hello world!”);
输入: 查找的字符串,替换的字符串,被查找字串
输出: Hello Shanghai!(返回替换后的结果)
54.substr_count(): 统计一个字符串,在另一个字符串中出现次数 在另一个字符串中出现次数
echo substr_count(“I love Shanghai. Shanghai is the biggest city in china.”,“Shanghai”);
输入:被统计字符串,检查的目标字符串
输出结果:2
55.substr_replace(): 替换字符串中某串为另一个字符串 替换字符串中某串为另一个字符串
echo substr_replace(“Hello”,“world”,0);
输入:查找字符串,替换上的字符串,起始位置(下标为 0 开始)
输出结果:world
56.similar_text(): 返回两字符串相同字符的数量 返回两字符串相同字符的数量
echo similar_text(“Hello World”,“Hello Shanghai”);
输入: 两个比较的字符串
输出: 6(整形,相同字符数量)
57.strrchr(): 返回一个字符串在另一个字符串中最后一次出现位置开始到末尾的字符串 返回一个字符串在另一个字符串中最后一次出现位置开始到末尾的字符串
echo strrchr(“I love Shanghai!”,“Shanghai”);
输出结果:Shanghai!
58.strstr(): 返回一个字符串在另一个字符串中开始位置到结束的字符串 返回一个字符串在另一个字符串中开始位置到结束的字符串
echo strstr(“I love Shanghai!”,“Shanghai”);
输出结果:Shanghai!
59.strchr(): strstr() 的别名,返回一个字符串在另一个字符串中首次出现的位置开始到末尾的字符 返回一个字符串在另一个字符串中首次出现的位置开始到末尾的字符
串
echo strchr(“Hello world!”,“world”);
输出结果:world!
60.stristr(): 返回一个字符串在另一个字符串中开始位置到结束的字符串,不区分大小写 返回一个字符串在另一个字符串中开始位置到结束的字符串,不区分大小写
echo stristr(“Hello world!”,“WORLD”);
输出结果:world!
61.strtr(): 转换字符串中的某些字符 转换字符串中的某些字符
echo strtr(“Hilla Warld”,“ia”,“eo”);
输入:目标字符串,要替换掉的字符,替换上的字符
输出结果:Hello World
62.strpos(): 寻找字符串中某字符最先出现的位置 寻找字符串中某字符最先出现的位置
echo strpos(“You love php, I love php too!”,“php”);
输出结果:9(下标从 0 开始)
63.stripos(): 寻找字符串中某字符最先出现的位置,不区分大小写 不区分大小写
echo stripos(“You love php, I love php too!”,“PHP”);
输出结果:9(下标从 0 开始)
64.strrpos(): 寻找某字符串中某字符最后出现的位置 寻找某字符串中某字符最后出现的位置
echo strrpos(“You love php, I love php too!”,“php”);
输出结果:21(下标从 0 开始)
65.strripos(): 寻找某字符串中某字符最后出现的位置,不区分大小写 不区分大小写
echo strripos(“You love php, I love php too!”,“PHP”);
输入:目标字符串,查找字符串
输出结果:21(下标从 0 开始)
66.strspn(): 返回字符串中首次符合 mask 的子字符串长度 的子字符串长度
echo strspn(“Hello world!”,“kHlleo”);
输入:目标字符串,
输出结果:5("kHlleo"在"Hello world!"中,有 5 个字符串 Hello 符合)
67.strcspn(): 返回字符串中不符合 mask 的字符串的长度 的字符串的长度
echo strcspn(“Hello world!”,“w”);
输入: 被查询,查询字符串,开始查询的字符,是查询长度
输出: 返回从开始到第几个字符
九、字符串统计
68.str_word_count(): 统计字符串含有的单词数 统计字符串含有的单词数
echo str_word_count(“I love Shanghai!”);
输入: 目标字符串
输出: 3(统计处的数量)
69.strlen(): 统计字符串长度 int strlen(str $str)
echo strlen(“Shanghai”);
输入: 目标字符串
输出结果: 8(整型长度)
70.count_chars(): 统计字符串中所有字母出现次数(0…255)
s
t
r
=
"
H
e
l
l
o
W
o
r
l
d
!
"
;
e
c
h
o
c
o
u
n
t
c
h
a
r
s
(
str = "Hello World!"; echo count_chars(
str="HelloWorld!";echocountchars(str,3);
输入:目标字符串
输出结果:!HWdelor(根据 ASCII 码先后显示输出)
十、字符串编码
71.md5(): 字符串 md5 编码 编码
s
t
r
=
"
H
e
l
l
o
"
;
e
c
h
o
m
d
5
(
str = "Hello"; echo md5(
str="Hello";echomd5(str);
输入:目标加密字符串
输出结果: 8b1a9953c4611296a827abf8c47804d7
十一、 数组创建
72.array(): 生成一个数组 生成一个数组
a
=
a
r
r
a
y
(
"
D
o
g
"
,
"
C
a
t
"
,
"
H
o
r
s
e
"
)
;
p
r
i
n
t
r
(
a=array("Dog","Cat","Horse"); print_r(
a=array("Dog","Cat","Horse");printr(a);
输入:数组值或键=>值一个数组型变量
输出结果: Array ( [0] => Dog [1] => Cat [2] => Horse )
73.array_combine(): 生成一个数组,用一个数组的值 用一个数组的值 作为键名 作为键名,另一个数组值作为值 另一个数组值作为值
$a1=array(“a”,“b”,“c”,“d”);
a
2
=
a
r
r
a
y
(
"
C
a
t
"
,
"
D
o
g
"
,
"
H
o
r
s
e
"
,
"
C
o
w
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
c
o
m
b
i
n
e
(
a2=array("Cat","Dog","Horse","Cow"); print_r(array_combine(
a2=array("Cat","Dog","Horse","Cow");printr(arraycombine(a1,
a
2
)
)
;
输
入
:
a2)); 输入:
a2));输入:a1 为提供键,$a2 提供值
输出结果: Array ( [a] => Cat [b] => Dog [c] => Horse [d] => Cow ) ( 合
成后的数组 )
74.range(): 创建并返回一个包含指定范围的元素的数组。 创建并返回一个包含指定范围的元素的数组。
n
u
m
b
e
r
=
r
a
n
g
e
(
0
,
50
,
10
)
;
p
r
i
n
t
r
(
number = range(0,50,10); print_r (
number=range(0,50,10);printr(number);
输入: 最小值,最大值,步长
输出结果: Array ( [0] => 0 [1] => 10 [2] => 20 [3] => 30 [4] => 40 [5]
=> 50 )( 合成后的数组 )
75.compact(): 创建一个由参数所带变量组成的数组 创建一个由参数所带变量组成的数组
$firstname = “Peter”;
$lastname = “Griffin”;
$age = “38”;
r
e
s
u
l
t
=
c
o
m
p
a
c
t
(
"
f
i
r
s
t
n
a
m
e
"
,
"
l
a
s
t
n
a
m
e
"
,
"
a
g
e
"
)
;
p
r
i
n
t
r
(
result = compact("firstname", "lastname", "age"); print_r(
result=compact("firstname","lastname","age");printr(result);
输入:变量或数组
输出结果: Array ( [firstname] => Peter [lastname] => Griffin [age] =>
38 )( 返回由变量名为键,变量值为值的数组,变量也可以为多维数组.会递归处理 )
76.array_fill(): 用给定的填充( 值生成)数组 数组
a
=
a
r
r
a
y
f
i
l
l
(
2
,
3
,
"
D
o
g
"
)
;
p
r
i
n
t
r
(
a=array_fill(2,3,"Dog"); print_r(
a=arrayfill(2,3,"Dog");printr(a);
输入:键,填充的数量,填充内容
输出结果: Array ( [2] => Dog [3] => Dog [4] => Dog )( 返回完成的数组 )
十二、数组合并和拆分
77.array_chunk(): 把一个数组分割为新的数组块 把一个数组分割为新的数组块
a
=
a
r
r
a
y
(
"
a
"
=
>
"
C
a
t
"
,
"
b
"
=
>
"
D
o
g
"
,
"
c
"
=
>
"
H
o
r
s
e
"
,
"
d
"
=
>
"
C
o
w
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
c
h
u
n
k
(
a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse","d"=>"Cow"); print_r(array_chunk(
a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse","d"=>"Cow");printr(arraychunk(a,2));
输入:一个数组
输出结果: Array ( [0] => Array ( [0] => Cat [1] => Dog ) [1] => Array
( [0] => Horse [1] => Cow ) )( 分割后的多维数组,规定每个新数组包含 2 个元素 )
78.array_merge(): 把两个或多个数组合并为一个数组。 把两个或多个数组合并为一个数组。
$a1=array(“a”=>“Horse”,“b”=>“Dog”);
a
2
=
a
r
r
a
y
(
"
c
"
=
>
"
C
o
w
"
,
"
b
"
=
>
"
C
a
t
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
m
e
r
g
e
(
a2=array("c"=>"Cow","b"=>"Cat"); print_r(array_merge(
a2=array("c"=>"Cow","b"=>"Cat");printr(arraymerge(a1,$a2));
输入: 两个数组
输出: Array ( [a] => Horse [b] => Cat [c] => Cow ) ( 返回完成后的数组 )
79.array_slice(): 在数组中根据条件取出一段值,并返回。 在数组中根据条件取出一段值,并返回。
a
=
a
r
r
a
y
(
0
=
>
"
D
o
g
"
,
1
=
>
"
C
a
t
"
,
2
=
>
"
H
o
r
s
e
"
,
3
=
>
"
B
i
r
d
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
s
l
i
c
e
(
a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); print_r(array_slice(
a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");printr(arrayslice(a,1,2));
输入: 一个数组
输出: Array ( [0] => Cat [1] => Horse )( 1 为从’Cat’开始,2 为返回两个元素 )
十三、数组比较
80.array_diff(): 返回两个数组的差集数组 返回两个数组的差集数组
$a1=array(0=>“Cat”,1=>“Dog”,2=>“Horse”);
a
2
=
a
r
r
a
y
(
3
=
>
"
H
o
r
s
e
"
,
4
=
>
"
D
o
g
"
,
5
=
>
"
F
i
s
h
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
d
i
f
f
(
a2=array(3=>"Horse",4=>"Dog",5=>"Fish"); print_r(array_diff(
a2=array(3=>"Horse",4=>"Dog",5=>"Fish");printr(arraydiff(a1,$a2));
输入: 两个或多个数组
输出结果: Array ( [0] => Cat )(
a
1
与
a1 与
a1与a2 的不同之处 )
81.array_intersect(): 返回两个或多个数组的交集数组 返回两个或多个数组的交集数组
$a1=array(“a”=>“red”,“b”=>“green”,“c”=>“blue”,“d”=>“yellow”);
$a2=array(“e”=>“red”,“f”=>“green”,“g”=>“blue”);
r
e
s
u
l
t
=
a
r
r
a
y
i
n
t
e
r
s
e
c
t
(
result=array_intersect(
result=arrayintersect(a1,
a
2
)
;
p
r
i
n
t
r
(
a2); print_r(
a2);printr(result);
输入:两个或多个数组
输出结果: Array ( [a] => red [b] => green [c] => blue )(
a
1
与
a1 与
a1与a2 的相
同之处 )
十四、数组查找替换
82.array_search(): 在数组中查找一个值,返回一个键,没有返回返回假 在数组中查找一个值,返回一个键,没有返回返回假
a
=
a
r
r
a
y
(
"
a
"
=
>
"
D
o
g
"
,
"
b
"
=
>
"
C
a
t
"
,
"
c
"
=
>
"
H
o
r
s
e
"
)
;
e
c
h
o
a
r
r
a
y
s
e
a
r
c
h
(
"
D
o
g
"
,
a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse"); echo array_search("Dog",
a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");echoarraysearch("Dog",a);
输入: 一个数组
输出: a( 成功返回键名,失败返回 false )
83.array_splice(): 把数组中一部分删除用其他值替代 把数组中一部分删除用其他值替代
$a1=array(0=>“Dog”,1=>“Cat”,2=>“Horse”,3=>“Bird”);
a
2
=
a
r
r
a
y
(
0
=
>
"
T
i
g
e
r
"
,
1
=
>
"
L
i
o
n
"
)
;
a
r
r
a
y
s
p
l
i
c
e
(
a2=array(0=>"Tiger",1=>"Lion"); array_splice(
a2=array(0=>"Tiger",1=>"Lion");arraysplice(a1,0,2,
a
2
)
;
p
r
i
n
t
r
(
a2); print_r(
a2);printr(a1);
输入: 一个或多个数组
输出: Array ( [0] => Tiger [1] => Lion [2] => Horse [3] => Bird )(
a
1
被
移
除
的
部
分
由
a1 被移除的部分由
a1被移除的部分由a2 补全 )
84.array_sum(): 返回数组中所有值的总和 返回数组中所有值的总和
a
=
a
r
r
a
y
(
0
=
>
"
5
"
,
1
=
>
"
15
"
,
2
=
>
"
25
"
)
;
e
c
h
o
a
r
r
a
y
s
u
m
(
a=array(0=>"5",1=>"15",2=>"25"); echo array_sum(
a=array(0=>"5",1=>"15",2=>"25");echoarraysum(a);
输入: 一个数组
输出: 45(返回和)
85.in_array(): 在数组中搜索给定的值,区分大小写 区分大小写
p
e
o
p
l
e
=
a
r
r
a
y
(
"
P
e
t
e
r
"
,
"
J
o
e
"
,
"
G
l
e
n
n
"
,
"
C
l
e
v
e
l
a
n
d
"
)
;
i
f
(
i
n
a
r
r
a
y
(
"
G
l
e
n
n
"
,
people = array("Peter", "Joe", "Glenn", "Cleveland"); if (in_array("Glenn",
people=array("Peter","Joe","Glenn","Cleveland");if(inarray("Glenn",people) ){
echo “Match found”;
} else{
echo “Match not found”;
}
输入: 需要搜索的值|数组
输出结果: Match found
86.array_key_exists(): 的 判断某个数组中是否存在指定的 key
a
=
a
r
r
a
y
(
"
V
o
l
v
o
"
=
>
"
X
C
90
"
,
"
B
M
W
"
=
>
"
X
5
"
)
;
i
f
(
a
r
r
a
y
k
e
y
e
x
i
s
t
s
(
"
V
o
l
v
o
"
,
a=array("Volvo"=>"XC90","BMW"=>"X5"); if (array_key_exists("Volvo",
a=array("Volvo"=>"XC90","BMW"=>"X5");if(arraykeyexists("Volvo",a))
{echo “键存在!”;}
else {echo “键不存在!”;}
输入: 需要搜索的键名|数组
输出结果:键存在!
十五、数组指针操作
87.key(): 返回数组内部指针当前指向元素的键名 返回数组内部指针当前指向元素的键名
p
e
o
p
l
e
=
a
r
r
a
y
(
"
B
i
l
l
"
,
"
S
t
e
v
e
"
,
"
M
a
r
k
"
,
"
D
a
v
i
d
"
)
;
e
c
h
o
"
键
的
当
前
位
置
是
:
"
.
k
e
y
(
people = array("Bill", "Steve", "Mark", "David"); echo "键的当前位置是:" . key(
people=array("Bill","Steve","Mark","David");echo"键的当前位置是:".key(people);
输入:目标数组或者数组变量
输出结果:键的当前位置是:0
88.current(): 返回数组中的当前元素( 单元).
p
e
o
p
l
e
=
a
r
r
a
y
(
"
B
i
l
l
"
,
"
S
t
e
v
e
"
,
"
M
a
r
k
"
,
"
D
a
v
i
d
"
)
;
e
c
h
o
c
u
r
r
e
n
t
(
people = array("Bill", "Steve", "Mark", "David"); echo current(
people=array("Bill","Steve","Mark","David");echocurrent(people) . “
”;
输入:目标数组或者数组变量
输出结果:Bill
89.next(): 把指向当前元素的指针移动到下一个元素的位置,并返回当前元素的值 并返回当前元素的值
p
e
o
p
l
e
=
a
r
r
a
y
(
"
B
i
l
l
"
,
"
S
t
e
v
e
"
,
"
M
a
r
k
"
,
"
D
a
v
i
d
"
)
;
e
c
h
o
c
u
r
r
e
n
t
(
people = array("Bill", "Steve", "Mark", "David"); echo current(
people=array("Bill","Steve","Mark","David");echocurrent(people) . “
”;
echo next($people);
输入:目标数组或者数组变量
输出结果:Bill
Steve(查询当前指针的下个指针指向的内容)
90.prev(): 把指向当前元素的指针移动到上一个元素的位置,并返回当前元素的值 并返回当前元素的值
p
e
o
p
l
e
=
a
r
r
a
y
(
"
B
i
l
l
"
,
"
S
t
e
v
e
"
,
"
M
a
r
k
"
,
"
D
a
v
i
d
"
)
;
e
c
h
o
c
u
r
r
e
n
t
(
people = array("Bill", "Steve", "Mark", "David"); echo current(
people=array("Bill","Steve","Mark","David");echocurrent(people) . “
”;
echo next(
p
e
o
p
l
e
)
.
"
<
b
r
>
"
;
e
c
h
o
p
r
e
v
(
people) . "<br>"; echo prev(
people)."<br>";echoprev(people);
输入:目标数组或者数组变量
输出结果:Bill
Steve
Bill
91.end(): 将数组内部指针指向最后一个元素,并返回该元素的值( 如果成功)
p
e
o
p
l
e
=
a
r
r
a
y
(
"
B
i
l
l
"
,
"
S
t
e
v
e
"
,
"
M
a
r
k
"
,
"
D
a
v
i
d
"
)
;
e
c
h
o
c
u
r
r
e
n
t
(
people = array("Bill", "Steve", "Mark", "David"); echo current(
people=array("Bill","Steve","Mark","David");echocurrent(people) . “
”;
echo end($people);
输入:目标数组或者数组变量
输出结果:Bill
David
92.reset(): 把数组的内部指针指向第一个元素,并返回这个元素的值 把数组的内部指针指向第一个元素,并返回这个元素的值
p
e
o
p
l
e
=
a
r
r
a
y
(
"
B
i
l
l
"
,
"
S
t
e
v
e
"
,
"
M
a
r
k
"
,
"
D
a
v
i
d
"
)
;
e
c
h
o
c
u
r
r
e
n
t
(
people = array("Bill", "Steve", "Mark", "David"); echo current(
people=array("Bill","Steve","Mark","David");echocurrent(people) . “
”;
echo next(
p
e
o
p
l
e
)
.
"
<
b
r
>
"
;
e
c
h
o
r
e
s
e
t
(
people) . "<br>"; echo reset(
people)."<br>";echoreset(people);
输出结果:Bill
Steve
Bill
93.list(): 用数组中的元素为一组变量赋值 用数组中的元素为一组变量赋值
m
y
a
r
r
a
y
=
a
r
r
a
y
(
"
D
o
g
"
,
"
C
a
t
"
,
"
H
o
r
s
e
"
)
;
l
i
s
t
(
my_array = array("Dog","Cat","Horse"); list(
myarray=array("Dog","Cat","Horse");list(a, $b, $c) = $my_array;
echo “I have several animals, a $a, a $b and a $c.”;
输入: 需要赋值的变量
输出结果: I have several animals, a Dog, a Cat and a Horse. ( 变量分别匹配数组中的值 )
94.array_shift(): 删除数组中的第一个元素,并返回被删除元素的值 删除数组中的第一个元素,并返回被删除元素的值
a
=
a
r
r
a
y
(
"
a
"
=
>
"
D
o
g
"
,
"
b
"
=
>
"
C
a
t
"
,
"
c
"
=
>
"
H
o
r
s
e
"
)
;
e
c
h
o
a
r
r
a
y
s
h
i
f
t
(
a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse"); echo array_shift(
a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");echoarrayshift(a);
print_r ($a);
输出结果: Dog
Array ( [b] => Cat [c] => Horse )
95.array_unshift(): 在数组开头插入一个或多个元素 在数组开头插入一个或多个元素
a
=
a
r
r
a
y
(
"
a
"
=
>
"
C
a
t
"
,
"
b
"
=
>
"
D
o
g
"
)
;
a
r
r
a
y
u
n
s
h
i
f
t
(
a=array("a"=>"Cat","b"=>"Dog"); array_unshift(
a=array("a"=>"Cat","b"=>"Dog");arrayunshift(a,“Horse”);
print_r($a);
输出结果: Array ( [0] => Horse [a] => Cat [b] => Dog )
96.array_push(): 向数组最后压入一个或多个元素 向数组最后压入一个或多个元素
a
=
a
r
r
a
y
(
"
D
o
g
"
,
"
C
a
t
"
)
;
a
r
r
a
y
p
u
s
h
(
a=array("Dog","Cat"); array_push(
a=array("Dog","Cat");arraypush(a,“Horse”,“Bird”);
print_r($a);
输入: 目标数组|需要压入的值
输出结果: Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird ) ( 新
的数组 )
97.array_pop(): 取得(删除)数组中的最后一个元素 取得(删除)数组中的最后一个元素
a
=
a
r
r
a
y
(
"
D
o
g
"
,
"
C
a
t
"
,
"
H
o
r
s
e
"
)
;
a
r
r
a
y
p
o
p
(
a=array("Dog","Cat","Horse"); array_pop(
a=array("Dog","Cat","Horse");arraypop(a);
print_r($a);
输入: 目标数组
输出结果: Array ( [0] => Dog [1] => Cat ) ( 返回数组剩余元素 )
十六、数组键值操作
98.shuffle(): 将数组打乱,保留键名 保留键名
m
y
a
r
r
a
y
=
a
r
r
a
y
(
"
a
"
=
>
"
D
o
g
"
,
"
b
"
=
>
"
C
a
t
"
)
;
s
h
u
f
f
l
e
(
my_array = array("a" => "Dog", "b" => "Cat"); shuffle(
myarray=array("a"=>"Dog","b"=>"Cat");shuffle(my_array);
print_r($my_array);
输入: 一个或多个数组
输出结果: 顺序打乱后的数组
99.count(): 计算数组中的单元数目或对象中的属性个数 计算数组中的单元数目或对象中的属性个数
$people = array(“Peter”, “Joe”, “Glenn”, “Cleveland”);
r
e
s
u
l
t
=
c
o
u
n
t
(
result = count(
result=count(people);
echo $result;
输入: 目标数组
输出结果: 4(输出元素个数)
100.array_flip(): 返回一个键值反转后的数组 返回一个键值反转后的数组
a
=
a
r
r
a
y
(
0
=
>
"
D
o
g
"
,
1
=
>
"
C
a
t
"
,
2
=
>
"
H
o
r
s
e
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
f
l
i
p
(
a=array(0=>"Dog",1=>"Cat",2=>"Horse"); print_r(array_flip(
a=array(0=>"Dog",1=>"Cat",2=>"Horse");printr(arrayflip(a));
输出结果: Array ( [Dog] => 0 [Cat] => 1 [Horse] => 2 )( 返回完成后的数
组 )
101.array_keys(): 返回数组所有的键,组成一个数组 组成一个数组
a
=
a
r
r
a
y
(
"
a
"
=
>
"
H
o
r
s
e
"
,
"
b
"
=
>
"
C
a
t
"
,
"
c
"
=
>
"
D
o
g
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
k
e
y
s
(
a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog"); print_r(array_keys(
a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");printr(arraykeys(a));
输出结果: Array ( [0] => a [1] => b [2] => c )( 返回由键名组成的数组 )
102.array_values(): 返回数组中所有值,组成一个数组 返回数组中所有值,组成一个数组
a
=
a
r
r
a
y
(
"
N
a
m
e
"
=
>
"
B
i
l
l
"
,
"
A
g
e
"
=
>
"
60
"
,
"
C
o
u
n
t
r
y
"
=
>
"
U
S
A
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
v
a
l
u
e
s
(
a=array("Name"=>"Bill","Age"=>"60","Country"=>"USA"); print_r(array_values(
a=array("Name"=>"Bill","Age"=>"60","Country"=>"USA");printr(arrayvalues(a));
输出结果: Array ( [0] => Bill [1] => 60 [2] => USA )( 返回由键值组成的
数组 )
103.array_reverse(): 返回一个元素顺序相反的数组 返回一个元素顺序相反的数组 元素顺序相反的一个数组,键名和键值依然
匹配
a
=
a
r
r
a
y
(
"
a
"
=
>
"
V
o
l
v
o
"
,
"
b
"
=
>
"
B
M
W
"
,
"
c
"
=
>
"
T
o
y
o
t
a
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
r
e
v
e
r
s
e
(
a=array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota"); print_r(array_reverse(
a=array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota");printr(arrayreverse(a));
输出结果: Array ( [c] => Toyota [b] => BMW [a] => Volvo )
104.array_count_values(): 统计数组中所有的值出现的次数 统计数组中所有的值出现的次数
a
=
a
r
r
a
y
(
"
C
a
t
"
,
"
D
o
g
"
,
"
H
o
r
s
e
"
,
"
D
o
g
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
c
o
u
n
t
v
a
l
u
e
s
(
a=array("Cat","Dog","Horse","Dog"); print_r(array_count_values(
a=array("Cat","Dog","Horse","Dog");printr(arraycountvalues(a));
输出结果: Array ( [Cat] => 1 [Dog] => 2 [Horse] => 1 )( 返回数组原键值
为新键名,次数为新键值 )
105.array_rand(): 从数组中随机抽取一个或多个元素, 注意是键名!!!
a
=
a
r
r
a
y
(
"
a
"
=
>
"
r
e
d
"
,
"
b
"
=
>
"
g
r
e
e
n
"
,
"
c
"
=
>
"
b
l
u
e
"
,
"
d
"
=
>
"
y
e
l
l
o
w
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
r
a
n
d
(
a=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); print_r(array_rand(
a=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");printr(arrayrand(a,2));
输入:目标数组, 返回多少随机键名
输出结果:返回 2 个随机的键名
106.each(): 返回数组中当前的键/值对并将数组指针向前移动一步 返回数组中当前的键/值对并将数组指针向前移动一步 调用 调用 array each ( array
&$array )
p
e
o
p
l
e
=
a
r
r
a
y
(
"
B
i
l
l
"
,
"
S
t
e
v
e
"
,
"
M
a
r
k
"
,
"
D
a
v
i
d
"
)
;
p
r
i
n
t
r
(
e
a
c
h
(
people = array("Bill", "Steve", "Mark", "David"); print_r (each(
people=array("Bill","Steve","Mark","David");printr(each(people));
输出结果: Array ( [1] => Bill [value] => Bill [0] => 0 [key] => 0 )
在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停
留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()。
返回值: 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单
元的数组,键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value
包含有数据。 如果内部指针越过了数组的末端,则 each() 返回 FALSE。
107.array_unique(): 删除重复值,返回剩余数组 删除重复值,返回剩余数组
a
=
a
r
r
a
y
(
"
a
"
=
>
"
C
a
t
"
,
"
b
"
=
>
"
D
o
g
"
,
"
c
"
=
>
"
C
a
t
"
)
;
p
r
i
n
t
r
(
a
r
r
a
y
u
n
i
q
u
e
(
a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat"); print_r(array_unique(
a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat");printr(arrayunique(a));
输入: 目标数组
输出结果: Array ( [a] => Cat [b] => Dog )( 返回无重复值数组,键名不变 )
十七、数组排序
108.sort(): 按升序对给定数组的值排序,不保留键名 不保留键名
c
a
r
s
=
a
r
r
a
y
(
"
V
o
l
v
o
"
,
"
B
M
W
"
,
"
T
o
y
o
t
a
"
)
;
s
o
r
t
(
cars=array("Volvo","BMW","Toyota"); sort(
cars=array("Volvo","BMW","Toyota");sort(cars);
输出结果:BMW
Toyota
Volvo
109.rsort(): 按降序对给定数组的值排序,不保留键名 不保留键名
c
a
r
s
=
a
r
r
a
y
(
"
V
o
l
v
o
"
,
"
B
M
W
"
,
"
T
o
y
o
t
a
"
)
;
r
s
o
r
t
(
cars=array("Volvo","BMW","Toyota"); rsort(
cars=array("Volvo","BMW","Toyota");rsort(cars);
输出结果:Volvo
Toyota
BMW
110.asort(): 按升序 按升序 对 关联 数组 的键值排序 排序,保持索引关系 保持索引关系
a
g
e
=
a
r
r
a
y
(
"
B
i
l
l
"
=
>
"
60
"
,
"
S
t
e
v
e
"
=
>
"
56
"
,
"
M
a
r
k
"
=
>
"
31
"
)
;
a
s
o
r
t
(
age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31"); asort(
age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31");asort(age);
输出结果:Key=Mark, Value=31
Key=Steve, Value=56
Key=Bill, Value=60
111.arsort(): 按降序 按降序 对 关联 数组 的键值排序 排序,保持索引关系 保持索引关系
a
g
e
=
a
r
r
a
y
(
"
B
i
l
l
"
=
>
"
60
"
,
"
S
t
e
v
e
"
=
>
"
56
"
,
"
M
a
r
k
"
=
>
"
31
"
)
;
a
r
s
o
r
t
(
age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31"); arsort(
age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31");arsort(age);
输出结果:Key=Bill, Value=60
Key=Steve, Value=56
Key=Mark, Value=31
112.ksort(): 按升序 按升序 对 关联 数组 的键名排序 排序,保持索引关系 保持索引关系
a
g
e
=
a
r
r
a
y
(
"
B
i
l
l
"
=
>
"
60
"
,
"
S
t
e
v
e
"
=
>
"
56
"
,
"
m
a
r
k
"
=
>
"
31
"
)
;
k
s
o
r
t
(
age=array("Bill"=>"60","Steve"=>"56","mark"=>"31"); ksort(
age=array("Bill"=>"60","Steve"=>"56","mark"=>"31");ksort(age);
输出结果:Key=Bill, Value=60
Key=Steve, Value=56
Key=mark, Value=31
113.krsort(): 按降序 按降序 对 关联 数组 的键名排序 排序,保持索引关系 保持索引关系
a
g
e
=
a
r
r
a
y
(
"
B
i
l
l
"
=
>
"
60
"
,
"
S
t
e
v
e
"
=
>
"
56
"
,
"
m
a
r
k
"
=
>
"
31
"
)
;
k
r
s
o
r
t
(
age=array("Bill"=>"60","Steve"=>"56","mark"=>"31"); krsort(
age=array("Bill"=>"60","Steve"=>"56","mark"=>"31");krsort(age);
输出结果:Key=mark, Value=31
Key=Steve, Value=56
Key=Bill, Value=60
114.natsort(): 用自然顺序算法对数组中的元素排序 用自然顺序算法对数组中的元素排序
t
e
m
p
f
i
l
e
s
=
a
r
r
a
y
(
"
t
e
m
p
15.
t
x
t
"
,
"
t
e
m
p
10.
t
x
t
"
,
"
t
e
m
p
1.
t
x
t
"
,
"
t
e
m
p
22.
t
x
t
"
,
"
t
e
m
p
2.
t
x
t
"
)
;
s
o
r
t
(
temp_files = array("temp15.txt","temp10.txt","temp1.txt","temp22.txt","temp2.txt"); sort(
tempfiles=array("temp15.txt","temp10.txt","temp1.txt","temp22.txt","temp2.txt");sort(temp_files);
echo “标准排序:”;
print_r(
t
e
m
p
f
i
l
e
s
)
;
e
c
h
o
"
<
b
r
>
"
;
n
a
t
s
o
r
t
(
temp_files); echo "<br>"; natsort(
tempfiles);echo"<br>";natsort(temp_files);
echo “自然排序:”;
print_r($temp_files);
输出结果:
标准排序:Array ( [0] => temp1.txt [1] => temp10.txt [2] => temp15.txt [3] => temp2.txt [4]
=> temp22.txt )
自然排序:Array ( [0] => temp1.txt [3] => temp2.txt [1] => temp10.txt [2] => temp15.txt [4]
=> temp22.txt )
115.natcasesort(): 自然排序,不区分大小写 不区分大小写
t
e
m
p
f
i
l
e
s
=
a
r
r
a
y
(
"
t
e
m
p
15.
t
x
t
"
,
"
T
e
m
p
10.
t
x
t
"
,
"
t
e
m
p
1.
t
x
t
"
,
"
T
e
m
p
22.
t
x
t
"
,
"
t
e
m
p
2.
t
x
t
"
)
;
n
a
t
s
o
r
t
(
temp_files = array("temp15.txt","Temp10.txt","temp1.txt","Temp22.txt","temp2.txt"); natsort(
tempfiles=array("temp15.txt","Temp10.txt","temp1.txt","Temp22.txt","temp2.txt");natsort(temp_files);
echo “自然排序:”;
print_r(
t
e
m
p
f
i
l
e
s
)
;
e
c
h
o
"
<
b
r
/
>
"
;
n
a
t
c
a
s
e
s
o
r
t
(
temp_files); echo "<br />"; natcasesort(
tempfiles);echo"<br/>";natcasesort(temp_files);
echo “不区分大小写的自然排序:”;
print_r($temp_files);
输出结果:
自然排序:Array ( [1] => Temp10.txt [3] => Temp22.txt [2] => temp1.txt [4] => temp2.txt [0]
=> temp15.txt )
不区分大小写的自然排序:Array ( [2] => temp1.txt [4] => temp2.txt [1] => Temp10.txt [0]
=> temp15.txt [3] => Temp22.txt )
十八、文件系统函数
116.fopen(): 者 打开文件或者 URL
$handle = fopen(“ftp://user:password@example.com/somefile.txt”, “w”);
返回值: 如果打开失败,本函数返回 FALSE
117.fclose(): 关闭一个已打开的文件指针 关闭一个已打开的文件指针
h
a
n
d
l
e
=
f
o
p
e
n
(
′
s
o
m
e
f
i
l
e
.
t
x
t
′
,
′
r
′
)
;
f
c
l
o
s
e
(
handle = fopen('somefile.txt', 'r'); fclose(
handle=fopen(′somefile.txt′,′r′);fclose(handle);
输出: 如果成功则返回 TRUE,失败则返回 FALSE
十九、 文件属性
118.file_exists(): 检查文件或目录是否存在 检查文件或目录是否存在
f
i
l
e
n
a
m
e
=
′
/
p
a
t
h
/
t
o
/
f
o
o
.
t
x
t
′
;
i
f
(
f
i
l
e
e
x
i
s
t
s
(
filename = '/path/to/foo.txt'; if (file_exists(
filename=′/path/to/foo.txt′;if(fileexists(filename)) {
echo “exists”;
} else {
echo “does not exist”;
}
输入: 指定的文件或目录
输出结果: 存在则返回 TRUE,否则返回 FALSE
119.filesize(): 取得文件大小 取得文件大小
$filename = ‘somefile.txt’;
echo
f
i
l
e
n
a
m
e
.
′
:
′
.
f
i
l
e
s
i
z
e
(
filename . ': ' . filesize(
filename.′:′.filesize(filename) .‘bytes’;
输出结果: 返回文件大小的字节数,如果出错返回 FALSE,并生成一条 E_WARNING 级
的错误
120.is_readable(): 判断给定文件是否可读 判断给定文件是否可读
f
i
l
e
n
a
m
e
=
′
t
e
s
t
.
t
x
t
′
;
i
f
(
i
s
r
e
a
d
a
b
l
e
(
filename = 'test.txt'; if (is_readable(
filename=′test.txt′;if(isreadable(filename)) {
echo ‘可读’;
} else {
echo ‘不可读’;
}
输出结果: 如果由 filename 指定的文件或目录存在并且可读则返回 TRUE
121.is_writable(): 判断给定文件是否可写 判断给定文件是否可写
f
i
l
e
n
a
m
e
=
′
t
e
s
t
.
t
x
t
′
;
i
f
(
i
s
w
r
i
t
a
b
l
e
(
filename = 'test.txt'; if (is_writable(
filename=′test.txt′;if(iswritable(filename)) {
echo ‘可写’;
} else {
echo ‘不可写’;
}
输出结果: 如果文件存在并且可写则返回 TRUE。
122.is_executable(): 判断给定文件是否可执行 判断给定文件是否可执行
f
i
l
e
=
′
s
e
t
u
p
.
e
x
e
′
;
i
f
(
i
s
e
x
e
c
u
t
a
b
l
e
(
file = 'setup.exe'; if (is_executable(
file=′setup.exe′;if(isexecutable(file)) {
echo ‘可执行’;
} else {
echo ‘不可执行’;
}
输出结果: 如果文件存在且可执行则返回 TRUE
123.filectime(): 获取文件的创建时间 获取文件的创建时间
f
i
l
e
n
a
m
e
=
′
s
o
m
e
f
i
l
e
.
t
x
t
′
;
e
c
h
o
f
i
l
e
c
t
i
m
e
(
filename = 'somefile.txt'; echo filectime(
filename=′somefile.txt′;echofilectime(filename);
输出结果: 时间以 Unix 时间戳的方式返回,如果出错则返回 FALSE
124.filemtime(): 获取文件的修改时间 获取文件的修改时间
f
i
l
e
n
a
m
e
=
′
s
o
m
e
f
i
l
e
.
t
x
t
′
;
e
c
h
o
f
i
l
e
m
t
i
m
e
(
filename = 'somefile.txt'; echo filemtime(
filename=′somefile.txt′;echofilemtime(filename);
输出: 返回文件上次被修改的时间,出错时返回 FALSE。时间以 Unix 时间戳的方式返回
125.fileatime(): 获取文件的上次访问时间 获取文件的上次访问时间
f
i
l
e
n
a
m
e
=
′
s
o
m
e
f
i
l
e
.
t
x
t
′
;
e
c
h
o
f
i
l
e
a
t
i
m
e
(
filename = 'somefile.txt'; echo fileatime(
filename=′somefile.txt′;echofileatime(filename);
输出结果: 返回文件上次被访问的时间,如果出错则返回 FALSE.时间以 Unix 时间戳的方
式返回.
126.stat(): 获取文件大部分属性值 获取文件大部分属性值
f
i
l
e
n
a
m
e
=
′
s
o
m
e
f
i
l
e
.
t
x
t
′
;
v
a
r
d
u
m
p
(
f
i
l
e
a
t
i
m
e
(
filename = 'somefile.txt'; var_dump(fileatime(
filename=′somefile.txt′;vardump(fileatime(filename));
输出: 返回由 filename 指定的文件的统计信息
二十、文件操作
127.fwrite(): 写入文件 写入文件
$filename = ‘test.txt’;
$somecontent = “添加这些文字到文件\n”;
h
a
n
d
l
e
=
f
o
p
e
n
(
handle = fopen(
handle=fopen(filename, ‘a’);
fwrite($handle,
s
o
m
e
c
o
n
t
e
n
t
)
;
f
c
l
o
s
e
(
somecontent); fclose(
somecontent);fclose(handle);
输出结果: 把 string的内容写入文件指针 handle 处。如果指定了 length,当写入了 length
个字节或者写完了 string 以后,写入就会停止, 视乎先碰到哪种情况
128.fputs(): 同上 同上,是 ,是 fwrite 的别名 的别名
129.fread(): 读取文件 读取文件
$filename = “/usr/local/something.txt”;
h
a
n
d
l
e
=
f
o
p
e
n
(
handle = fopen(
handle=fopen(filename, “r”);
c
o
n
t
e
n
t
s
=
f
r
e
a
d
(
contents = fread(
contents=fread(handle, filesize(
f
i
l
e
n
a
m
e
)
)
;
f
c
l
o
s
e
(
filename)); fclose(
filename));fclose(handle);
输出结果:从文件指针 handle,读取最多 length 个字节
130.feof(): 检测文件指针是否到了文件结束的位置 检测文件指针是否到了文件结束的位置
f
i
l
e
=
@
f
o
p
e
n
(
"
n
o
s
u
c
h
f
i
l
e
"
,
"
r
"
)
;
w
h
i
l
e
(
!
f
e
o
f
(
file = @fopen("no_such_file", "r"); while (!feof(
file=@fopen("nosuchfile","r");while(!feof(file)) {
}
fclose($file);
输出: 如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括
socket 超时),其它情况则返回 FALSE
131.fgets(): 从文件指针中读取一行 从文件指针中读取一行
h
a
n
d
l
e
=
@
f
o
p
e
n
(
"
/
t
m
p
/
i
n
p
u
t
f
i
l
e
.
t
x
t
"
,
"
r
"
)
;
i
f
(
handle = @fopen("/tmp/inputfile.txt", "r"); if (
handle=@fopen("/tmp/inputfile.txt","r");if(handle) {
while (!feof($handle)) {
b
u
f
f
e
r
=
f
g
e
t
s
(
buffer = fgets(
buffer=fgets(handle, 4096);
echo KaTeX parse error: Expected 'EOF', got '}' at position 9: buffer; }̲ fclose(handle);
}
输出结果: 从 handle 指向的文件中读取一行并返回长度最多为 length-1 字节的字符串.
碰到换行符(包括在返回值中)、EOF 或者已经读取了 length -1 字节后停止(看先碰到那一
种情况). 如果没有指定 length,则默认为 1K, 或者说 1024 字节.
132.fgetc(): 从文件指针中读取字符 从文件指针中读取字符
f
p
=
f
o
p
e
n
(
′
s
o
m
e
f
i
l
e
.
t
x
t
′
,
′
r
′
)
;
i
f
(
!
fp = fopen('somefile.txt', 'r'); if (!
fp=fopen(′somefile.txt′,′r′);if(!fp) {
echo ‘Could not open file somefile.txt’;
} while (false !== (
c
h
a
r
=
f
g
e
t
c
(
char = fgetc(
char=fgetc(fp))) {
echo “$char\n”;
}
输入: 目标文件中要读取的字符
输出: 返回一个包含有一个字符的字符串,该字符从 handle 指向的文件中得到. 碰到
EOF 则返回 FALSE.
133.file(): 把整个文件读入一个数组中 把整个文件读入一个数组中
l
i
n
e
s
=
f
i
l
e
(
′
h
t
t
p
:
/
/
w
w
w
.
e
x
a
m
p
l
e
.
c
o
m
/
′
)
;
/
/
在
数
组
中
循
环
,
显
示
H
T
M
L
的
源
文
件
并
加
上
行
号
。
f
o
r
e
a
c
h
(
lines = file('http://www.example.com/'); //在数组中循环,显示 HTML 的源文件并加 上行号。 foreach (
lines=file(′http://www.example.com/′);//在数组中循环,显示HTML的源文件并加上行号。foreach(lines as $line_num => KaTeX parse error: Expected '}', got '#' at position 20: …) { echo "Line #̲<b>{line_num} : " .
htmlspecialchars($line) . “
\n”;
} //另一个例子将 web 页面读入字符串。参见 file_get_contents()。
$html = implode(’’, file(‘http://www.example.com/’));
输出: 数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败 file() 返
回 FALSE
134.readfile(): 输出一个文件 输出一个文件
echo readfile(“test.txt”);
输出结果:There are two lines in this file.
This is the last line.
57(读入一个文件并写入到输出缓冲。返回从文件中读入的字节数。如果出
错返回 FALSE)
135.file_get_contents(): 将整个文件读入一个字符串 将整个文件读入一个字符串
echo file_get_contents(‘http://www.baidu.com’);
输出结果:百度的页面
136.file_put_contents():将一个字符串写入文件 将一个字符串写入文件
echo file_put_contents(“test.txt”,“Hello World. Testing!”);
输出结果:26(该函数将返回写入到文件内数据的字节数)
137.ftell(): 返回文件指针读/写的位置 写的位置
f
i
l
e
=
f
o
p
e
n
(
"
t
e
s
t
.
t
x
t
"
,
"
r
"
)
;
e
c
h
o
f
t
e
l
l
(
file = fopen("test.txt","r"); echo ftell(
file=fopen("test.txt","r");echoftell(file);
fseek(
f
i
l
e
,
"
15
"
)
;
e
c
h
o
"
<
b
r
/
>
"
.
f
t
e
l
l
(
file,"15"); echo "<br />" . ftell(
file,"15");echo"<br/>".ftell(file);
fclose($file);
输出结果:0
15(返回由 handle 指定的文件指针的位置,也就是文件流中的偏移量)
138.fseek(): 在文件指针中定位 在文件指针中定位
f
i
l
e
=
f
o
p
e
n
(
"
t
e
s
t
.
t
x
t
"
,
"
r
"
)
;
/
/
读
取
第
一
行
f
g
e
t
s
(
file = fopen("test.txt","r"); // 读取第一行 fgets(
file=fopen("test.txt","r");//读取第一行fgets(file);
// 倒回文件的开头
fseek($file,0);
输出结果: 成功则返回 0;否则返回 -1
139.rewind(): 将文件指针的位置倒回文件的开头 将文件指针的位置倒回文件的开头
f
i
l
e
=
f
o
p
e
n
(
"
t
e
s
t
.
t
x
t
"
,
"
r
"
)
;
/
/
改
变
文
件
指
针
的
位
置
f
s
e
e
k
(
file = fopen("test.txt","r"); //改变文件指针的位置 fseek(
file=fopen("test.txt","r");//改变文件指针的位置fseek(file,“15”);
//把文件指针设定为 0
rewind($file);
输出结果:如果成功则返回 TRUE,失败则返回 FALSE
140.flock(): 轻便的执行文件锁定 轻便的执行文件锁定
f
p
=
f
o
p
e
n
(
′
t
x
.
t
x
t
′
,
′
r
′
)
;
f
l
o
c
k
(
fp=fopen('tx.txt','r'); flock(
fp=fopen(′tx.txt′,′r′);flock(fp, LOCK_SH); //共享锁
flock(
f
p
,
L
O
C
K
E
X
)
;
/
/
独
立
锁
,
写
文
件
时
用
它
打
开
f
l
o
c
k
(
fp, LOCK_EX); //独立锁,写文件时用它打开 flock(
fp,LOCKEX);//独立锁,写文件时用它打开flock(fp, LOCK_NB); //附加锁
flock(
f
p
,
L
O
C
K
U
N
)
;
/
/
释
放
锁
f
c
l
o
s
e
(
fp, LOCK_UN); //释放锁 fclose(
fp,LOCKUN);//释放锁fclose(fp);
输出: 如果成功则返回 TRUE,失败则返回 FALSE
二十一、 目录
141.basename(): 返回路径中的文件名部分 返回路径中的文件名部分
p
a
t
h
=
"
/
t
e
s
t
w
e
b
/
h
o
m
e
.
p
h
p
"
;
/
/
显
示
带
有
文
件
扩
展
名
的
文
件
名
e
c
h
o
b
a
s
e
n
a
m
e
(
path = "/testweb/home.php"; //显示带有文件扩展名的文件名 echo basename(
path="/testweb/home.php";//显示带有文件扩展名的文件名echobasename(path);
//显示不带有文件扩展名的文件名
echo basename($path,".php");
输出结果: home.php
home
142.dirname(): 返回路径中的目录部分 返回路径中的目录部分
echo dirname(“c:/testweb/home.php”);
echo dirname("/testweb/home.php");
输出结果: c:/testweb
/testweb
143.pathinfo(): 返回文件路径的信息 返回文件路径的信息
print_r(pathinfo("/testweb/test.txt"));
输出结果:
Array
(
[dirname] => /testweb
[basename] => test.txt
[extension] => txt
) (返回一个关联数组包含有 path 的信息)
144.opendir(): 打开目录句柄 打开目录句柄 (打开一个目录,读取它的内容,然后关闭)
f
p
=
o
p
e
n
d
i
r
(
′
/
i
m
g
e
s
/
′
)
;
e
c
h
o
r
e
a
d
d
i
r
(
fp=opendir('/imges/'); echo readdir(
fp=opendir(′/imges/′);echoreaddir(fp);
closedir($fp);
输出结果:cat.gif(如果成功则返回目录句柄的 resource,失败则返回 FALSE)
145.readdir(): 从目录句柄中读取条目 从目录句柄中读取条目 (返回目录中下一个文件的文件名)
f
p
=
o
p
e
n
d
i
r
(
′
/
i
m
g
e
s
/
′
)
;
e
c
h
o
r
e
a
d
d
i
r
(
fp=opendir('/imges/'); echo readdir(
fp=opendir(′/imges/′);echoreaddir(fp);
closedir($fp);
输出结果:cat.gif(如果成功则返回目录句柄的 resource,失败则返回 FALSE)
146.closedir(): 关闭目录句柄 关闭目录句柄
f
p
=
o
p
e
n
d
i
r
(
′
/
i
m
g
e
s
/
′
)
;
e
c
h
o
r
e
a
d
d
i
r
(
fp=opendir('/imges/'); echo readdir(
fp=opendir(′/imges/′);echoreaddir(fp);
closedir($fp);
输出结果:cat.gif(如果成功则返回目录句柄的 resource,失败则返回 FALSE)
147.rewinddir() : 倒回目录句柄 倒回目录句柄
f
p
=
o
p
e
n
d
i
r
(
′
/
i
m
a
g
e
s
/
′
)
;
e
c
h
o
r
e
a
d
d
i
r
(
fp=opendir('/images/'); echo readdir(
fp=opendir(′/images/′);echoreaddir(fp).’
’;
rewinddir(
f
p
)
;
e
c
h
o
r
e
a
d
d
i
r
(
fp); echo readdir(
fp);echoreaddir(fp).’
’;
closedir($fp);
输出结果: 指定的目录流重置到目录的开头
148.mkdir(): 新建目录 新建目录
mkdir(‘123’);
输出结果: 新建一个指定的目录
149.rmdir(): 删除目录 删除目录
rmdir(‘123’);
输出结果: 删除指定的目录。目录必须是空的,而且要有相应的权限。如果成功则返回
TRUE,失败则返回 FALSE
150.unlink(): 删除文件 删除文件
unlink(‘123/1.txt’);
rmdir(‘123’);
输出结果: 删除 1.txt
151.copy(): 拷贝文件 拷贝文件
echo copy(“source.txt”,“target.txt”);
输出结果: 1
152.rename(): 重命名一个文件或目录 重命名一个文件或目录
rename(“images”,“pictures”);
输出: 如果成功则返回 TRUE,失败则返回 FALSE
二十二、 文件的上传与下载
153.is_uploaded_file():过 判断文件是否是通过 HTTP POST 上传的 上传的
f
i
l
e
=
"
t
e
s
t
.
t
x
t
"
;
i
f
(
i
s
u
p
l
o
a
d
e
d
f
i
l
e
(
file = "test.txt"; if(is_uploaded_file(
file="test.txt";if(isuploadedfile(file)){ echo (“KaTeX parse error: Expected 'EOF', got '}' at position 35: …a HTTP POST"); }̲ else{ echo ("file is not uploaded via HTTP POST”); }
输出结果:test.txt is not uploaded via HTTP POST
154.move_uploaded_file(): 将上传的文件移动到新位置 将上传的文件移动到新位置
if(is_uploaded_file(KaTeX parse error: Expected '}', got 'EOF' at end of input: …_uploaded_file(_FILES[‘bus’][‘tmp_name’], KaTeX parse error: Expected '}', got 'EOF' at end of input: … /><img src="'.NewPath.’">’;
}else{ exit(‘失败’);
}
}else{ exit(‘不是上传文件’);
}
二十三、时间函数
155.time(): 的 返回当前的 Unix 时间戳 time();
t
=
t
i
m
e
(
)
;
e
c
h
o
(
t=time(); echo(
t=time();echo(t . “
”);
echo(date(“Y-m-d”,$t));
输出结果: 1494396195
2017-05-10(返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日
00:00:00)到当前时间的秒数)
156.mktime(): 的 取得一个日期的 Unix 时间戳 时间戳 ,使用它来查找该日期的天
echo "Oct 3, 1975 was on a ".date(“l”, mktime(0,0,0,10,3,1975));
输出结果:Oct 3, 1975 was on a Friday
156.date(): 格式化一个本地时间/日期 格式化一个本地时间/日期
echo date("Y-m-d h:i:s ");
输出: 2017-05-10 06:11:06
157.checkdate(): 验证一个格里高里日期 验证一个格里高里日期
var_dump(checkdate(12,31,-400));
echo “
”;
var_dump(checkdate(2,29,2003));
echo “
”;
var_dump(checkdate(2,29,2004));
输出结果:bool(false)
bool(false)
bool(true)
158.date_default_timezone_set(): 设定用于一个脚本中所有日期时间函数的默认时区 设定用于一个脚本中所有日期时间函数的默认时区
date_default_timezone_set(‘PRC’);
159.getdate(): 取得日期/时间信息 取得日期/时间信息
print_r(getdate());
输出结果: Array ( [seconds] => 42 [minutes] => 18 [hours] => 6 [mday]
=> 10 [wday] => 3 [mon] => 5 [year] => 2017 [yday] => 129 [weekday] =>
Wednesday [month] => May [0] => 1494397122 ) ( 返回一个根据 timestamp 得出
的包含有日期信息的关联数组。如果没有给出时间戳则认为是当前本地时间 )
160.strtotime(): 为 将任何英文文本的日期时间描述解析为 Unix 时间戳 时间戳
echo strtotime(“now”);
输出结果:1494397277
161.microtime(): 前 返回当前 Unix 时间戳和微秒数 时间戳和微秒数
echo(microtime());
输出结果: 0.00806100
1494398062
二十四、其他常用:
162.intval(): 获取变量的整数值 获取变量的整数值
echo intval(0.99);
变量转成整数类型
输出结果:0(向下取整)
163.PDO 数 类的相关函数 prepare() execute() fetch()
$dbms=‘mysql’; // 数据库类型,使用不同的数据库时,修改此处即可
$dbname=‘db_xuesheng’; // 使用的数据库
$user=‘root’; // 数据库连接用户名
$pwd=‘1234’; // 对应的密码
$host=‘localhost’; // 数据库主机名
d
s
n
=
"
dsn="
dsn="dbms:host=
h
o
s
t
;
d
b
n
a
m
e
=
host;dbname=
host;dbname=dbname";
try{
p
d
o
=
n
e
w
P
D
O
(
pdo=new PDO(
pdo=newPDO(dsn,
u
s
e
r
,
user,
user,pwd); // 初始化一个PDO对象,即创建了数据库连接对象$pdo
$pdo->query(“set names GBK”); // 解决乱码
$query=“select * from tb_chengji”; // 定义SQL语句
r
e
s
u
l
t
=
result=
result=pdo->prepare($query); // 准备查询语句
r
e
s
u
l
t
−
>
e
x
e
c
u
t
e
(
)
;
/
/
执
行
查
询
语
句
,
并
返
回
结
果
集
/
/
循
环
输
出
查
询
结
果
集
,
设
置
结
果
集
为
关
联
数
组
w
h
i
l
e
(
result->execute(); // 执行查询语句,并返回结果集 // 循环输出查询结果集,设置结果集为关联数组 while(
result−>execute();//执行查询语句,并返回结果集//循环输出查询结果集,设置结果集为关联数组while(res=$result->fetch(PDO::FETCH_ASSOC)){
- 正则表达式-元字符 元字符
元字符及其匹配范围
\d 匹配任意一个十进制数字,等价于: [0-9]
\D 匹配除十进制数字以外的任意数字,等价于: [^0-9]
\s:匹配空白字符,等价于: [\n\f\r\t\v]
\S: 匹配除空白字符以外的任意一个字符, 等价于[^\n\f\r\t\v]
\w 匹配任意一个数字、字母和下划线,等价于: [0-9a-zA-Z_]
\W 匹配除字母、数字和下划线以外的任意字符, 等价于: [^0-9a-zA-Z_]
[]:1)用来表示范围。2)匹配任意一个中括号中定义的原子
[^]: 中括号里面的^(抑扬符):表示匹配任意一个除中括号里面定义的原子
限定次数
- 匹配 0 次、1 次或多次其前的原子, 等价于: {0,}
- 匹配 1 次或多次其前的原子, 等价于: {1,}
? 匹配 0 次或 1 次其前的原子, 等价于: {0,1}
{n} 表示其前的原子正好出现 n 次, 等价于: {n,} 表示其前的原子至少出现 n 次,最多不限制
{m,n} 表示其前的原子最少出现 m 次,最多出现 n 次
其它
. 匹配除换行符(\n)以外的任意字符【windows 下还匹配\f\r】 | 两个或多个分支选择【优先
级最低】
^ 匹配输入字符的开始位置
$ 匹配输入字符的结束位置
\b 匹配词边界
\B 匹配非词边界
() 1)模式单元,把多个小原子组成一个大原子。2)可以改变优先级
转载于:https://www.cnblogs.com/qczy/p/11074796.html
附加:https://blog.csdn.net/qq_35458793/article/details/80651773