php学习笔记7--php中的数组

php中的数组

1.数组的定义:
显式方式:$arr = array(1,2,3,4,5);
$arr1 = array('name'=>'dqrcsc','age'=>'24');
隐式方式:$arr[]=1;$arr[]=2;
注意:array() 是一个语言结构,用于字面上表示数组,不是常规的函数。

2.关于php数组的索引:
语法“index => values”,用逗号分开,定义了索引和值。索引可以是字符串或数字。
如果省略了索引,会自动产生从 0 开始的整数索引。如果索引是整数,则下一个产生的索引将是目前最大的整数索引 + 1。
注意如果定义了两个完全一样的索引,则后面一个会覆盖前一个。
此外,php数组的索引有如下转换规则:
此外 key 会有如下的强制转换:
1) 包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
2) 浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
3) 布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
4) Null会被转换为空字符串,即键名 null 实际会被储存为 ""。
5) 数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。
<?php
$array = array(
1 => "a" ,
"1" => "b" , //索引转换为整型的1
1.5 => "c" , //索引转换为整型的1
true => "d" , //索引转换为整型的1
);
var_dump ( $array );
?>
以上例程会输出:
array(1) {
[1]=>
string(1) "d"
}

3.数组的遍历:
count():返回数组元素的个数(长度)
1)使用for循环对索引数组进行遍历:
$len = count($arr);
for($i=0; $i<$len; $i++){ $arr[$i]...}
2)使用foreach遍历关联数组:
foreach(数组 as $value){
//使用$value当做当前元素的值
}
foreach(数组 as $key => $value){
//使用$key当做当前元素的下标
//使用$value当做当前元素的值
}
若在遍历过程中要修改数组元素的值,可以使用&进行引用传值:
foreach ( $arr as & $value ) {
$value = $value * 2 ;
}


3)数组指针:
每个数组都有一个指针(定位符),默认指向数组的第一个元素。如果在对数组进行遍历,那么该指针会在访问指针当前所指向的元素
之后,向后移动,指向下一个元素的地址。遍历完最后一个元素,指针会继续下移,从而移出当前数组空间,再次对数组元素进行访问
的时候,返回FALSE。

4)使用函数each()进行数组遍历:
each():每次从数组中获取当前数组指针所指向的元素,返回一个有四个元素的数组(关联+索引),并且将数组的指针下移一位
list是一个语法结构,将得到的数组里的元素,必须是以0开始的索引元素,对应的赋值给list所指定的变量里。
语法:list($name,$age,$gender) = array('dqrcsc',24,'男');
相当于$name = 'dqrcsc';$age = 24; $gender = '男';
因为each返回的结果里有两个索引元素0和1,所以一般使用list与each进行配对使用

5)关于数组的常用函数:
key():获取数组当前指针所指向元素的索引
current():获取数组指针所指向的元素的值
next():返回数组当前指针所指向的下一个的元素的值,并指针下移一位
prev():返回当前指针所在位置的前一个元素的值,并且将指针向前移动一位
注意:如果当前指针已经在数组元素的最后一个元素,那么next返回FALSE,指针依然下移一位,移出了数组;同样的,当前指针已经在
数组元素的第一个元素,那么使用prev将会将数组的指针移出数组,返回FALSE。next()和prev()都无法将移出数组的指针再拉回到合
法的位置。
以下两个函数可用于重置数组指针:
reset():重置数组的指针,让数组指针指向第一个元素,如果成功返回第一个元素的值,失败返回FALSE
end():获取数组元素最后一个元素的值,指针也会指向最后一个元素
注意:如果数组第一个元素被删除,那么指针重置之后,是第二个元素(从第一个有效元素开始)。
array_keys():获取数组的所有下标,返回一个索引数组,数组元素的值都是目标数组的下标
array_values():获取数组所有的值,返回一个索引数组
array_push():从数组的尾端加入一个元素(模拟入栈)
array_pop:从数组的尾端弹出一个元素(模拟出栈)
array_shift:从数组头部将数组元素移出(模拟出队)
array_unshift:从数组的头部插入数据(模拟入队)
数组与字符串之间的转换:
explode():将字符串按照指定的分隔符分解成一系列小的字符串,都成为数组的一个元素
implode():将一个数组里的所有的元素按照某个分隔符进行拼接,变成一个字符串
range():按照ASCII码能够指定范围,自动生成数组元素的函数
array_rand():从数组中随机取出指定个数的元素下标
shuffle():将原来的数组里的元素打乱
数组的合并:+和array_merge()
+:保存第一个数组的所有元素,如果后面的数组的元素与前面数组的元素的下标相同,那么就忽略,如果不同则加到第一个数组里,
最终返回一个数组
array_merge():先保留第一个数组的所有元素,如果后面数组的元素与前面数组的元素关联下标相同则用后面数组的元素覆盖前面的
;如果是索引下标,直接添加到第一个数组后面,重置索引。

原文地址:https://www.cnblogs.com/dqrcsc/p/4409512.html