加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php学习笔记05:数组

发布时间:2022-11-25 22:30:56 所属栏目:PHP教程 来源:互联网
导读: 数组 数组的定义 1、使用array关键字,格式为:
$变量=array(元素1,元素2,元素3...);//这种方式系统自动赋予数字下标PHP数组,从0开始

2、使用中括号包裹数据,格式为:
$变量=[元素1,元素

数组 数组的定义 1、使用array关键字,格式为:

$变量=array(元素1,元素2,元素3...);//这种方式系统自动赋予数字下标PHP数组,从0开始

php数组追加数组_PHP数组_php数组中添加数组元素

2、使用中括号包裹数据,格式为:

$变量=[元素1,元素2,元素3...];//不指定下标的话,系统自动赋予下标,从0开始

php数组中添加数组元素_php数组追加数组_PHP数组

3、隐形数组

php数组追加数组_php数组中添加数组元素_PHP数组

PHP数组特点

1、可以整数下标也可以KEY下标

如果下标都为整数,称为索引数组。

如果下标都为KEY,成为关联数组。

2、不同下标可以混合存在:混合数组。

3、数组元素的顺序以放入顺序为准,跟下标无关

4、数组下标的自增长性

5、特殊值下标的自动转换:为阅读流畅应避免这种方式命名下标。

布尔值:true和false

空:NULL

php数组中添加数组元素_php数组追加数组_PHP数组

6、php中数组元素没有类型限制。

7、php中数组元素没有长度限制

补充:php中的数组是很大的数据,所以存储位置是堆区,为当前数组分配一块连续的内存。

多维数组

数组里面的元素又是数组。

*在PHP中没有维数限制。但是为流畅性和结构化,不建议超过三维以上数组。也会增加复杂度、降低访问效率。

二维数组:

数组里面所有元素都是一维数组。

php数组追加数组_php数组中添加数组元素_PHP数组

异形数组(不规则数组):

数组中的元素不规则,有普通基本变量,也有数组。

在实际开发中并不常用,我们一般尽量让数组元素规则化(便于访问)。

echo '二维数组演示
'; for($i=1;$i<10;$i++){ for($j=1;$j<10;$j++){//可将$j<10改成$j<=$i;可得到真正九九乘法表。但二维数组将成为不规则数组 $二维数组[$i][$j]=$i*$j;//使用一个规则二维数组存储九九乘法表每一项的积 echo $i.'X'.$j.'='.$二维数组[$i][$j].' '; //输出每一项形如x*y=z } echo '
';//内层循环结束后换行。 } var_dump($二维数组);//直观的查看这个存积的二维数组

遍历数组:

遍历的基本含义:

php数组中添加数组元素_PHP数组_php数组追加数组

foreach遍历语法

foreach (array_expression as $value)

statement

foreach (array_expression as $key => $value)

statement

php数组追加数组_php数组中添加数组元素_PHP数组

如上图代码,演示了foreach两种遍历。

在进行数据存储定义的时候,通常二维数组不会两个维度的key下标都为数字,一般是一维为数字(无意义),二维为字符串(数据库表字段),所以在进行遍历的时候,通常只需要对一维数组进行遍历,取得二维数组元素,然后二维数组通过下标去访问。如下例所示。

php数组中添加数组元素_php数组追加数组_PHP数组

foreach遍历原理:

本质是数组内部有一个指针,默认指向数组第一个元素。foreach利用指针获取数据,同时移动指针。

1、foreach会重置指针,让指针指向第一个元素。

2、进入foreach循环,通过指针取得当前第一个元素,然后将下标取出,放到对应的下标变量中(如果存在),将值取出来放到对应的值变量中。指针下移。

3、进入循环内部(循环体),开始执行;

4、重复2-3,直到在2的时候遇到指针取不到内容(指针指向数组最后),即结束。

for循环遍历数组

php数组追加数组_PHP数组_php数组中添加数组元素

如上图代码演示for循环遍历数组。注意$len=count($arr)放置于循环起始处,使得它只计算一次。

while配合each和list遍历数组 each函数:

返回数组中当前的键/值对并将数组指针向后移动一步。*注意:自PHP 7.2.0起,此函数已被弃用。 非常不鼓励依赖此功能。

php数组追加数组_php数组中添加数组元素_PHP数组

如果调用each函数,数组指针已经移动到数组尾部;此时继续调用each,则因为指针无法再向后移动返回false。

php数组追加数组_PHP数组_php数组中添加数组元素

如上图代码。调用4次each,数组指针已经到数组尾部再无数组元素(本数组只有4个元素)。此时继续调用each函数,返回false。

list:

语法:list($var1[,$...] ) :array

功能: 把数组中的值赋给一组变量。理论上它是一种结构而不是函数。像array()一样,这不是真正的函数,而是语言结构。list()可以在单次操作内就为一组变量赋值。

Note:

在 PHP 7.1.0 之前的版本,list()仅能用于数字索引的数组,并假定数字索引从 0 开始。

警告:

PHP 5 里,list()从最右边的参数开始赋值; PHP 7 里,list()从最左边的参数开始赋值。

如果你用单纯的变量,不用担心这一点。 但是如果你用了具有索引的数组,通常你期望得到的结果和在list()中写的一样是从左到右的,但在 PHP 5 里实际上不是, 它是以相反顺序赋值的。

通常而言,不建议依赖于操作的顺序,在未来可能会再次发生修改。

警告:

在list()执行过程中修改数组(比如使用list($a, $b) = $b)将会产生不可预知的结果。

php数组追加数组_php数组中添加数组元素_PHP数组

如上图代码演示,$arr数组有两个元素,0号元素和2号元素(缺1号元素)。

list是按索引号顺序自动寻找数组元素的,因此在如上语句中$firtst指定为第一个元素即0号元素,则$second自动顺序指定为下一个元素即索引为1号的元素,但是明显数组中不存在该元素,因此系统报错。

list与each配合特别好:each(共4个元素,其中)含2个元素就是0和1下标元素。

list(变量1,变量2)=each(数组);//是一种赋值运算,但是可以得到false结果(each指针已移动到数组尾部,此时取不到正确的结果)

php数组中添加数组元素_PHP数组_php数组追加数组

数组相关的函数: 1、排序函数:都是按照ascii码顺序比较

sort函数:对数组顺序排序((排序后下标重置))

语法:sort(array&$array[,int$sort_flags= SORT_REGULAR] ) :bool

本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。

注意:

如果两个成员比较相等,则它们在排序数组中的相对顺序是未定义的。

参数

array

要排序的数组。

sort_flags

可选的第二个参数sort_flags可以用以下值改变排序的行为:

排序类型标记:

返回值

成功时返回TRUE, 或者在失败时返回FALSE。

rsort():对数组逆序排序。(排序后下标重置)

php数组追加数组_PHP数组_php数组中添加数组元素

如上图代码,排序之后,下标被重置了.

asort():排序(保留原有下标)

arsort():逆序排序(保留原有下标)

php数组追加数组_php数组中添加数组元素_PHP数组

如上图代码,排序后原有下标保留,并未改变.

ksort():顺序排序(按key排序)

krsort():逆序排序(按KEY排序)

PHP数组_php数组追加数组_php数组中添加数组元素

如上图代码,krsort按key值逆序排列.

shuffle(数组):随机打乱数组元素,下标会重置

php数组中添加数组元素_PHP数组_php数组追加数组

如上图代码,shuffle随机打乱数组元素.下标会重置.

2数组指针函数

reset():重置指针,指针指向第1个元素并获取元素值

end():重置指针,指针指向最后1个元素并获取元素值

next():指针下移一位.,获取该元素值,无效则返回false

prev():指针上移一位.获取该元素值,无效则返回false

php数组中添加数组元素_php数组追加数组_PHP数组

current():获取当前指针对应的元素值.,无效则返回false

key():获取当前指针对应的key/下标

php数组中添加数组元素_php数组追加数组_PHP数组

注意事项:假如指针在首位再使用prev;假如指针在最后1个元素再使用next,导致指针超出范围,且无法再用指针使用数组,此时只能使用end或reset重置指针.

echo '无效数组指针演示
'; $arr=array(1,2,3,4,5);//默认指针在首位 var_dump(prev($arr));//将首位的指针向前移动一位,无效,返回false var_dump(current($arr));//此时数组指针已经无效,获取当前指针无效,返回false var_dump(key($arr));//因为当前指针无效,当前key值返回null

上例演示数组指针错误操作后指针变为无效及返回值.

3其他函数

count():获取数组元素数量.

array_push():在数组尾部添加1个或多个元素(压入),返回处理之后数组元素个数.

array_pop();去除数组最后1个元素(弹出),并返回该元素值.

php数组中添加数组元素_PHP数组_php数组追加数组

array_shift():去除数组第一个元素,并返回该元素值.

array_unshift():在数组首部插入1个或多个元素.,返回处理之后数组元素个数.

PHP数组_php数组中添加数组元素_php数组追加数组

PHP模拟数据结构:

栈:压栈,先进后出(FILO)

队列:类似排队,先进先出(FIFO)

array_reverse():返回单元顺序相反的数组

in_array();判断一个元素在数组中是否存在

PHP数组_php数组追加数组_php数组中添加数组元素

array_keys();获取1个数组的所有下标,返回1个索引数组

array_values():获取1个数组的所有值,返回1个索引数组.

PHP数组_php数组追加数组_php数组中添加数组元素

编程思想: 递推算法

递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法.递推算法分顺推和逆推.

顺推:通过最简单的已知条件,然后逐步推演结果.

逆推:通过结果找到规律,然后推到已知条件.

下例求斐波那契数列

php数组追加数组_php数组中添加数组元素_PHP数组

递归算法:

1简化问题:找到最优子问题(不能再小了)

2函数自己调用自己

php数组追加数组_PHP数组_php数组中添加数组元素

PHP数组_php数组中添加数组元素_php数组追加数组

递归算法很容易把系统资源糟蹋完,慎用!

数组排序算法 冒泡算法

PHP数组_php数组中添加数组元素_php数组追加数组

冒泡排序视频:

php数组中添加数组元素_PHP数组_php数组追加数组

选择排序视频:

PHP数组_php数组追加数组_php数组中添加数组元素

插入排序视频:

php数组追加数组_PHP数组_php数组中添加数组元素

快速排序视频:

php数组中添加数组元素_php数组追加数组_PHP数组

归并排序视频:

查找算法:

php数组中添加数组元素_php数组追加数组_PHP数组

php数组中添加数组元素_PHP数组_php数组追加数组

上图代码演示了顺序查找.

PHP数组_php数组追加数组_php数组中添加数组元素

php数组追加数组_php数组中添加数组元素_PHP数组

PHP数组_php数组追加数组_php数组中添加数组元素

二分查找法视频:

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!