7.数组和正则
1.数组数据结构
1.1什么是数组
数组的英文是array , 可以存入多个不同类型的数据,是一个复合数据类型。
1.2定义数组
$a1 = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇')
在上例中,我们发现我们存入了:整型、浮点、布尔、字符串,可以通过var_dump()
函数打印出来显示
<?php
$a1 = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇');
var_dump($shu);
?>
//array(4) {
// [0]=>
// int(1)
// [1]=>
// float(1.5)
// [2]=>
// bool(true)
// [3]=>
// string(33) "天王盖地虎,小鸡炖蘑菇"
//}
1.3指定索引
数组的默认索引是从0开始,依次加1直到最后一个元素,当然你也可以自定义索引,如果你从开头自定义
则后面的元素的索引就从自定义的那个数字依次加1
<?php
$a1 = array(2=>1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇');
var_dump($shu);
?>
//array(4) {
// [2]=>
// int(1)
// [3]=>
// float(1.5)
// [4]=>
// bool(true)
// [5]=>
// string(33) "天王盖地虎,小鸡炖蘑菇"
//}
当然你也可以把索引设置成字母
<?php
$a1 = array("name"=>"ymn" ,"age"=>21);
var_dump($a1);
?>
//array(2) {
// ["name"]=>
// string(3) "ymn"
// ["age"]=>
// int(21)
//}
1.4常用操作数组函数
序号 | 函数信息 | 说明 |
---|---|---|
1 | array_shift() | 弹出数组中的第一个元素 |
2 | array_unshift() | 在数组的开始处压入元素 |
3 | array_push() | 向数组的末尾处压入元素 |
4 | array_pop() | 弹出数组末尾的最后一个元素 |
5 | current() | 读出指针当前位置的值 |
6 | key() | 读出指针当前位置的键 |
7 | next() | 指针向下移 |
8 | prev() | 向上移 |
9 | reset() | 指针到开始处 |
10 | end() | 指针到结束处 |
这些函数,也是面试中基础面试中最爱问到的问题。
序号 | 函数信息 | 说明 |
---|---|---|
1 | array_combine() | 生成一个数组,用一个数组的值作为键名,另一个数组值作为值 |
2 | range() | 创建并返回一个包含指定范围的元素的数组。 |
3 | compact() | 创建一个由参数所带变量组成的数组 |
4 | array_fill() | 用给定的值生成数组 |
5 | array_chunk() | 把一个数组分割为新的数组块 |
6 | array_merge() | 把两个或多个数组合并为一个数组 |
7 | array_slice() | 在数组中根据条件取出一段值,并返回 |
8 | array_diff() | 返回两个数组的差集数组 |
9 | array_search() | 在数组中搜索给定的值,如果成功则返回相应的键名 |
10 | array_splice() | 把数组中的一部分去掉并用其它值取代 |
11 | array_sum() | 计算数组中所有值的和 |
12 | in_array() | 检查数组中是否存在某个值 |
13 | array_key_exists() | 检查给定的键名或索引是否存在于数组中 |
14 | shuffle() | 将数组打乱,保留键值 |
15 | count() | 计算数组中的单元数目或对象中的属性个数 |
16 | array_flip() | 返回一个键值反转后的数组 |
17 | array_keys() | 返回数组所有的键,组成一个数组 |
18 | array_values() | 返回数组中所有值,组成一个数组 |
19 | array_reverse() | 返回一个元素顺序相反的数组 |
20 | array_count_values() | 统计数组中所有的值出现的次数 |
21 | array_rand() | 从数组中随机抽取一个或多个元素,注意是键名 |
22 | array_unique() | 删除重复值,返回剩余数组 |
23 | sort() | 按升序对给定数组的值排序,不保留键名 |
24 | rsort() | 对数组逆向排序,不保留键名 |
25 | asort() | 对数组排序,保持索引关系 |
26 | arsort() | 对数组逆向排序,保持索引关系 |
27 | ksort() | 按键名对数组排序 |
28 | krsort() | 将数组按照键逆向排序 |
29 | natsort() | 用自然顺序算法对数组中的元素排序 |
30 | natcasesort() | 自然排序,不区分大小写 |
31 | array_filter() | 去掉数组中的空元素或者预定元素 |
32 | extract() | 将键变为变量名,将值变为变量值 |
2.PHP中的正则表达式
正则表达式就是匹配字符的规则
正则表达是会在开发中经常看到,它主要用在以下一些地方:匹配邮箱、手机号码、验证码、替换敏感的关键词。
例如:涉及政治和骂人的话
PHP的正则表达示定界符的规定如下:定界符,不能用a-zA-Z0-9\
其他的都可以用。必须成对出现,有开始就
有结束。
2.1定义方法
例子 说明
/中间写正则/ 正确 (常用这个)
$中间写正则$ 正确
%中间写正则% 正确
^中间写正则^ 正确
@中间写正则@ 正确
(中间写正则) 错误 /\//
A中间写正则A 错误
2.2转义字符
在php中\(反斜杠)
是具有转义的意思的,如果在\
后面紧跟一个n
那么n
就会被转义成换行
如果你想取消转义只需要在前面再加一个\
即可
/\// // 把/取消转义,/原本是正则的结束,加上\就是普通的/(斜杠)了
2.3preg_match函数
<?php
$zz = '/wq/';
$string = 'ssssswqaaaaaa';
if(preg_match($zz, $string, $matches)){ // 匹配的结果会赋值给$matches(数组)
echo '匹配到了,结果为:'.$matches[0]."\n";
var_dump($matches);
}else{
echo '没有匹配到';
}
?>
2.4常用的正则函数
序号 | 函数信息 | 说明 |
---|---|---|
1 | preg_filter() | 执行一个正则表达式搜索和替换 |
2 | preg_grep() | 返回匹配模式的数组条目 |
3 | preg_match() | 执行一个正则表达式匹配 |
4 | preg_match_all() | 执行一个全局正则表达式匹配 |
5 | preg_replace_callback_array() | 传入数组,执行一个正则表达式搜索和替换使用回调 |
6 | preg_replace_callback() | 执行一个正则表达式搜索并且使用一个回调进行替换 |
7 | preg_replace() | 执行一个正则表达式的搜索和替换 |
8 | preg_split() | 通过一个正则表达式分隔字符串 |
$zz = '/wq/';
$string = 'asdwqfggwqaaaawqaa';
$res = preg_split($zz, $string); // 匹配的结果会赋值给$res(数组)
var_dump($res);
//array(4) {
// [0]=>
// string(3) "asd"
// [1]=>
// string(3) "fgg"
// [2]=>
// string(4) "aaaa"
// [3]=>
// string(2) "aa"
//}