3.1 PHP数组数据结构
数组的英文是array,可以存入多个不同类型的数据,是一个复合数据类型。
数组案例:
<?php $shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇'); echo '<pre>'; var_dump($shu); echo '</pre>'; ?>
在上例中,我们发现我们存入了:整型、浮点、布尔、字符串
注:上例中echo pre这个标签的主要目的是为原样输出,格式展示的更好看,更清晰。
可以用var_dump()打印出来显示看一下效果:
索引数组的下标必须要从0开始吗?
答:这个问题其实不然,索引数组并不一定要从0开始。
那如何能够不从0开始呢?
答:需要用到大家在上面学的一小块知识哟。就是键值对应符。我们来动手写。
<?php $kele = array('只有不断努力才能博得未来',12 => 'NoAlike', 'PHP中文网' , '去PHP中文网学PHP', 19 => '苹果和梨子我都爱' , '橘子我最爱'); echo'<br />'; var_dump($kele).'<br />'; ?>
-
for循环遍历索引数组
-
<?php $shu = array(1, 1.5, true, '天王盖地虎,小鸡炖蘑菇'); echo $shu[2].'<br />'; echo $shu[3].'<br />'; for ($i = 0; $i <= 3; $i++) { echo $shu[$i].'<br />'; } ?>
通过上面的例子,我们就把数组进行了循环。因为下标是从0开始的,定义$i=0 。每次循环的时候让$i 加1 ,但是必须要小于等于3,因为数组下标的最大值为3。
-
常用操作数组函数
序号 |
函数信息 |
说明 |
实例 |
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() |
把两个或多个数组合并为一个数组 |
|
|
array_slice() |
在数组中根据条件取出一段值,并返回 |
|
|
array_diff() |
返回两个数组的差集数组 |
|
|
array_search() |
在数组中搜索给定的值,如果成功则返回相应的键名 |
|
|
array_splice() |
把数组中的一部分去掉并用其它值取代 |
|
|
array_sum() |
计算数组中所有值的和 |
|
|
in_array() |
检查数组中是否存在某个值 |
|
|
array_key_exists() |
检查给定的键名或索引是否存在于数组中 |
|
|
shuffle() |
将数组打乱,保留键值 |
|
|
count() |
计算数组中的单元数目或对象中的属性个数 |
|
|
array_flip() |
返回一个键值反转后的数组 |
|
|
array_keys() |
返回数组所有的键,组成一个数组 |
|
|
array_values() |
返回数组中所有值,组成一个数组 |
|
|
array_reverse() |
返回一个元素顺序相反的数组 |
|
|
array_count_values() |
统计数组中所有的值出现的次数 |
|
|
array_rand() |
从数组中随机抽取一个或多个元素,注意是键名 |
|
|
array_unique() |
删除重复值,返回剩余数组 |
|
|
sort() |
按升序对给定数组的值排序,不保留键名 |
|
|
rsort() |
对数组逆向排序,不保留键名 |
|
|
asort() |
对数组排序,保持索引关系 |
|
|
arsort() |
对数组逆向排序,保持索引关系 |
|
|
ksort() |
按键名对数组排序 |
|
|
krsort() |
将数组按照键逆向排序 |
|
|
natsort() |
用自然顺序算法对数组中的元素排序 |
|
|
natcasesort() |
自然排序,不区分大小写 |
|
|
array_filter() |
去掉数组中的空元素或者预定元素 |
|
|
extract |
将键变为变量名,将值变为变量值 |
|
功能:弹出数组中的第一个元素 <?php $mingren = array("邓超", "黄晓明", "宁泽涛", "钟汉良"); $dc = array_shift($mingren); echo $dc .'<br />'; print_r($mingren); ?>
综合案例:
<?php $shu = array(213,012,12.3,true,'天王盖地虎,小鸡炖蘑菇'); echo'<br />'; var_dump($shu); echo'<br />'; $type=gettype($shu); echo $type.'<br />'; echo'<br />'; echo count($shu); echo'<br />'; for($i=0;$i <= 3;$i++){ echo $shu[$i]; } echo'<br />'; echo array_shift($shu); echo'<br />'; var_dump($shu); echo $shu[4].'<br />'; $kele = array('只有不断努力才能博得未来',12 => 'NoAlike', 'PHP中文网' , '去PHP中文网学PHP', 19 => '苹果和梨子我都爱' , '橘子我最爱'); echo'<br />'; var_dump($kele).'<br />'; echo'<br />'; $zz = array("/sb/||/dd/||//"); $string = 'ssssbsssdaaaa'; if(preg_match($zz,$string,$matches)){ echo 'yes;'; var_dump($matches); }else{ echo 'no'; } echo'<br />'; $zz = '/wq/'; $string = 'ssssswqaaaaaa'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } end($shu); ?>