数组可以存入多个不同类型的数据,是一个复合数据类型
索引数组
下标全为整型的数组
1.索引数组若不强制声明他的下标,他的下标是从0开始的。
2.如果指定过下标他的下标就为我指定的值。下标重复,后面的值会将前面的值覆盖,下标可以不按顺序指定
3.若某个值,强制指定了下标(下标为10)。在它后面加上的值,不指定下标的话。他们的下标增长规律为最大值+1。
增
1.向索引数组中增加元素用: 数组变量名[]、数组变量名[键值]这两种方式来增加元素,每次增加的值都在数组最后一个位置
2.键值的增长规则与之前的规则一样。都是最大值加1的原则。
删
1.使用unset删除变量的方式来删除数组里面的值。
2.删除了中间的值,并不会让后面的下标向前自动移动。而是原来的值为多少就为多少
3.删除掉其中的某个值,新加入的值不会替换掉原来的位置,下标依然遵循最大值加1的原则。
改
用变量名[键] = 新值。就把数组中的值定的值修改了
声明
1.用变量名后面接中括号的方式声明数组。数组名[] = ‘xxx’;
2.数组名 = [‘aaaa’,’bbbb’,’ccccc’]
3.数组名 = array(‘aa’,’bb’,’cc’)
关联数组
下标可以为字符串的数组
1.声明关联数组是 键名 => 值
2.在关联数组可以有索引数组的元素
3.关联数组中的索引数组的元素后再声明了无下标的元素,依然是最大值+1原则
增删改声明同索引数组
多维数组
数组里面元素为数组,有几层称为几维数组,元素的访问只要一层一层下标挨着写下去即可
例1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22$area = array(
'china' => array(
'上海',
'湖北',
'天津',
'北京' => array(
'hd' => '海淀',
'朝阳',
'房山',
'cp' => '昌平',
),//注意逗号
'广东' => array(
'深圳',
'广州',
'佛山',
'dg' => '东莞',
)
)
)
访问 昌平,即$area[china]['北京']['cp']
`
数组处理
统计数组长度 count
int count ( mixed $变量)
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count($a);//3
如果是一个多维数组,这个函数只会统计当前的这一个维度的数组元素个数
遍历
1.下标连续的索引数组
for($i = 0 ; $i < count($num) ; $i++){
echo $num[$i].’
‘;
}
2.下标不连续索引数组、关联数组
foreach( 要循环的数组变量 as [键变量 =>] 值变量){
//循环的结构体
}
键变量可写可不写,不写每次只读取键值对的值到值变量
例1
2
3
4
5
6
7
8
9
10$data = [
'nh' => '你好',
'xx' => '谢谢',
];
foreach($data as $key => $value){
echo $key . '-------' . $value . '<br />';
}
foreach($data as $value){
echo $value . '<br />';
}
3.多维数组
多层循环套嵌即可
- list each函数
list:从左到右,将索引数组下标为0的元素对应变量1,下标1的元素对应变量2,依此类推。
list ( mixed $变量1 [, mixed $变量n ] )
list($one , $two , $three) = array(‘张三’ ,’李四’ ,’王五’);
如果list变量找到对应下标值,变量就没有对应值,
数组长度大于list变量数,多余的数组元素会被直接舍弃,没有变量对应
each:传入一个数组。它会将其中的一个元素拆为一个新数组,元素的下标做新数组下标为0和下标为’key’的值,元素的值做新数组下标为1和下标为’value’的元素的值。每次执行这样操作一个元素。执行一次先后移动一次,同样的方式操作下一个数组元素。执行到最后,返回false。
array each ( array &$array )1
2
3
4
5
6
7
8
9
10//定义一个变量叫$temp
$temp=[
'11'=>'dddddd',
'111'=>'gggggg',
];
//第一次each
$data = each($temp);//对'11'=>'dddddd',拆分,返回数组给$data
$data = each($temp);//对'111'=>'gggggg',拆分,返回数组给$data
$data = each($temp);//此时,后面已没有可操作的元素了,返回false
结合list和each访问数组元素
while(list($key,$value) = each($temp)){
echo $key. ‘—–’ .$value .’
‘;
}
$key回去寻找下标0的元素值,$value回去寻找下标1的元素值
常用操作函数
函数名(数组名)
函数 功能
array_shift 弹出数组中的第一个元素,后面元素往前移动,返回一个元素值
array_unshift 向指数组的开始处压入一个或多个元素,返回的是总个数
array_push 向指数组末尾处压入一个或多个元素,返回的是总个数
array_pop 弹出数组末尾的最后一个元素
current 读出指针当前位置的值
key 读出指针当前位置的键
next 指针向下移
prev 向上移
reset 指针到开始处
end 指针到结束处
常用函数
函数名 功能
array_combine() 生成一个数组,用一个数组的值作为键名,另一个数组值作为值
range() 创建并返回一个包含指定范围的元素的数组。
compact() 创建一个由参数所带变量组成的数组
array_fill() 用给定的值生成数组
array_chunk() 把一个数组分割为新的数组块
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 将键变为变量名,将值变为变量值