php遍历原理,php数组原理遍历原理揭秘

php中的中的数组跟js里面数组是不大一样的。php中数组的下标可以整数也可以是字符串,而且数组中元素的顺序不是由下标决定的,而是由添加元素的顺序。

数组基础

$arr1 = array(元素1,元素2,。。。。。 );

array(1, 5, 1.1, “abc”, true, false);//可以存储任何数据,此时为“默认下标”,

array(2=>1, 5=>5, 3=>1.1, 7=>“abc”, 0=>true);//下标可以任意设定(无需顺序,无需连续)

array(2=>1, 5, 1=>1.1, “abc”, 0=>true)//可以加下标,也可以不加(默认下标),下标分别是:2,3,1,4,0

//默认下标规则:前面已经用过的最大数字下标+1

array(2=>1, ‘dd’=>5, 1=>1.1, “abc”, 0=>true)//混合下标,同样遵循默认下标规则

array(-2=>1, ‘dd’=>5, 1.1, “abc”, true);//负数下标不算在整数下标中,而只当作字符下标

//则最后3项的下标是:0, 1, 2

array(2.7=>1, ‘dd’=>5, 1=>1.1, “abc”, 0=>true);//浮点数下标为自动转换为整数,且直接抹掉小数

array(“2.7” =>1, ‘dd’=>5, “11”=>1.1, “abc”, true)//纯数字字符串下标,当作数字看待,

//则此时下标为:2, ‘dd’, 11, 12, 13

array(2=>1, ‘dd’=>5, true=>1.1, “abc”, false=>true)//布尔值当下标,则true为1,false为0;

array(2=>1, ‘dd’=>5, 2=>1.1, “abc”, true)//如果下标跟前面的重复,则单纯覆盖前面同名下标的值

//此时相当于为:array(2=>1.1, ‘dd’=>5, “abc”, true)

其他形式;

$arr1[] = 1;

$arr1[] = 5;

$arr1[] = 1.1;//直接在变量后面使用[],就成为数组,并依次赋值。

。。。。

$arr2[‘aa’] = 1;

$arr2[‘bbbcc’] = 5;

$arrr2[5] = 1.1;

。。。。。。。。

这种形式写的下标,其实跟使用array语法结构几乎一样。

取值:通过下标。

赋值(同定义):

数组遍历:

遍历基本语法:

foreach( $arr as [ $key => ] $value ) //$key可以称为键变量,$value可以称为值变量。

{

//这里就可以对$key 和 $value 进行所有可能的操作——因为他们就是一个变量

//$key 代表每次取得元素的下标,可能是数字,也可以能是字符串

//$value 代表每次取得元素的值,可能是各种类型。

//此循环结构会从数组的第一项一直遍历循环到最后一项,然后结束。

}

数组指针和遍历原理:

每个数组内部都有一个“指针 ”,该指针指定了当前数组取值取到的是某个元素。

其实所谓的遍历就是指针一次移动,然后取值操作。

下面有一个跟指针有关的数组函数:

1、$v1=current($arr) //取到当前数组指针指向的元素的值,没有则返回false;

2、$v1 = key($arr) //取到当前数组指针指向的元素的下标,没有则返回false;

3、$v1 = prev($arr) //将指针移动到“上一个元素”,并且取到它的值;

4、$v1 = next($arr) //将指针移动到“下一个元素”,并且取到它的值;

5、$v1 = reset($arr) //将指针移动到“第一个元素”,并且取到它的值;

6、$v1 = end($arr) //将指针移动到“最后一个元素”,并且取到它的值

7、$v1 = each($arr) //取得指针当前指向的元素的下标和值,并且将指针移到下一个元素,没有则返回false。

for+next+reset遍历数组

php数组原理遍历原理揭秘

while+each+list遍历

说到这个遍历,首先我们要了解一下each和list的功能

each($arr);返回数组指针当前指向的元素的键和值,并且是双份,并且移动指针到下一位,如果没有,则返回false;

所谓的双份是什么意思?我们测试一下即可:

php数组原理遍历原理揭秘

结果:

php数组原理遍历原理揭秘

取到了第一个元素的下标和值,各两份,而且此时数组指针也指向了第二元素。

list($v1,$v2,$v3……)=$arr list的功能就很奇怪了

php数组原理遍历原理揭秘

php数组原理遍历原理揭秘

依次取得数组中对应索引的值,不过只能取到数组中索引为0,1,2……这些对应的值。如果索引有重复的,则后面值覆盖前面值。

接下来就可以通过这些进行数组遍历了:

php数组原理遍历原理揭秘

php数组原理遍历原理揭秘

foreach遍历:这个是我们常见的遍历方式,不过这个方式也有一个很特别的地方,当我们遍历过程中对数组进行改变,则会拷贝一个原数组继续遍历。可能这里不太好理解,不过看一下例子就明白了。

php数组原理遍历原理揭秘

php数组原理遍历原理揭秘

可见,数组其实已经改变了,但是foreach遍历出来的并没有增加的哪一项。此时,我们也可以输出一下当前指针位置:

php数组原理遍历原理揭秘

php数组原理遍历原理揭秘

数组指针停留在了位置3上。由此可以推断:本来是在原数组上进行遍历的,结果数组发生改变,然后拷贝了一个原数组,在拷贝的数组上完成后面的遍历。

本文由甲爪cpa联盟整理编辑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值