php数组原理遍历原理揭秘

php数组原理遍历原理揭秘_php_web-itnose

首页
asp
php
javascript
iis
apache
html/css
coldfusion
ajax
vbscript
cgi
xml/xsl
跨浏览器开发
ruby/rails
程序员
html5
jquery
seo
jboss
json
angularjs
markdown
nginx
thinkphp
yii
pageadmin
extjs
wampserver
kendo ui
coffeescript
gulp
ecmascript
bootstrap

itnose首页 > web > php >

php数组原理遍历原理揭秘

2017-02-24 17:07

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//默认下标规则:前面已经用过的最大数字下标+1array(2=>1, ‘dd’=>5, 1=>1.1, “abc”, 0=>true)//混合下标,同样遵循默认下标规则array(-2=>1, ‘dd’=>5, 1.1, “abc”, true);//负数下标不算在整数下标中,而只当作字符下标//则最后3项的下标是:0, 1, 2array(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, 13array(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联盟整理编辑!

相关搜索:
hibernate 原理
spring原理
webservice原理
webservice 原理
linq 原理

相关文章

2014-02-08 11:59 php原理:php底层工作原理
2017-03-21 17:11 php foreach原理详解
2017-03-09 14:42 php底层工作原理
2016-12-06 20:58 php分页技术原理
2015-07-26 18:11 php上传原理与实例

更多相关文章>>

最新文章

2017-06-20 01:35 老铁们,有没有可能让php文件同时只能一个人访问
2017-06-20 01:35 怎么禁止图片直接通过url访问
2017-06-20 01:35 求救!启动wamp只能用本机访问,同局域网的其它设备访问不到!搞了大半天t-t
2017-06-19 15:35 nginx下的thinkphp问题
2017-06-19 15:35 php form 文件上传

更多最新文章>>

热门搜索

linq原理
java基础原理
ejb工作原理
hibernate工作原理
spring工作原理
spring框架原理
spring aop实现原理
webservice工作原理
数据库原理
数据库系统原理
linq 遍历
spring 揭秘
spring揭秘
.net安全揭秘
linq 数组

京icp备14022385号-2

©2014 itnose软件编程教程 | 联系我们:email:twobrushes@126.com qq:35155868

Posted in 未分类