一、for与foreach遍历结果顺序一致

$arr = array(‘max‘,‘xiaoli‘,‘xiaowang‘,‘laosan‘);

//for遍历

for($i=0;$i

echo $arr[$i];//max xiaoli xiaowang laosan

}

//foreach遍历

foreach($arr as $item){

echo $item;//max xiaoli xiaowang laosan

}

二、for与foreach遍历结果不一致

$arr = array();

$arr[]=‘max‘;

$arr[2] =‘xiaoli‘;

$arr[]=‘xiaowang‘;

$arr[1]=‘laosan‘;

//for遍历

for($i=0;$i

echo $arr[$i];//max laosan xiaoli xiaowang

}

//foreach遍历

foreach($arr as $item){

echo $item;//max xiaoli xiaowang laosan

}

一维数组遍历(关联)

$arr = array(

‘name‘=>‘max‘,

‘age‘=>18,

‘address‘=>‘北京‘

);

//for遍历

for($i=0;$i

echo $arr[$i];//undefined offset 0 1 2(未定义下标,无法读取)

}

//foreach遍历

foreach($arr as $item){

echo $item;//max 18 北京

}

二维数组遍历(普通)

$arr = array(

array(‘name‘,‘age‘,‘address‘),

array(‘北京‘,‘上海‘,‘深圳‘)

);

//按顺序输出

for($i=0;$i

for($j=0;$j

echo $arr[$i][$j];//name age address 北京 上海 深圳

}

//echo $arr[$i];

}

//foreach遍历

foreach($arr as $item){

foreach($item as $o){

echo $o;//name age address 北京 上海 深圳

}

}

二维数组遍历(关联)

$arr = array(

array(‘name‘=>‘max‘,‘age‘=>18,‘address‘=>‘beijing‘),

array(‘city‘=>‘beijing‘,‘area‘=>‘haidian‘)

);

//for遍历

for($i=0;$i

for($j=0;$j

echo $arr[$i][$j];//undefind offset (没有定义下标)

}

}

//foreach遍历

foreach($arr as $item){

foreach($item as $o){

echo $o;//max 18 beijing beijing haidian

}

}

实现原理

PHP数组是一种hash表,hash表的一个特点就是查询速度快。

关联数组之所以无法用for循环的遍历,是因为在hash表中并不是按顺序存储的。

原文:http://blog.51cto.com/12008764/2141998

php遍历原理,PHP数组遍历与实现原理相关推荐

  1. php array的实现原理,PHP数组遍历与实现原理

    一维数组遍历(普通) 一.for与foreach遍历结果顺序一致 $arr = array('max','xiaoli','xiaowang','laosan'); //for遍历 for($i=0; ...

  2. php的遍历方法,PHP数组遍历方法总结

    在PHP中数组分为两类: 数字索引数组和关联数组. 其中数字索引数组和C语言中的数组一样,下标是为0,1,2- 而关联数组下标可能是任意类型,与其它语言中的hash,map等结构相似. 下面介绍PHP ...

  3. 数组反向遍历ios_iOS中数组遍历的方法及比较

    数组遍历是编码中很常见的一种需求,我们来扒一拔iOS里面都有什么样的方法来实现,有什么特点. 因为ios是兼容C语言的,所以c语言里面的最最常见的for循环遍历是没有问题的. 本文中用的数组是获取的系 ...

  4. JS遍历(循环)——JS对象遍历(循环)JS数组遍历(循环)

    最近在处理一些偏逻辑的代码块经常遇到遍历问题,接下来跟大家一起温习一下有关于JS的遍历吧. js数组遍历 1.for循环 //不缓存 var arr = [5,2,0,1,3,1,4]; for ( ...

  5. html遍历map,forEach()方法遍历map()方法数组遍历

    1.forEach()方法//以前遍历的方法 var arr = ['苹果','西瓜','香蕉','芒果']; for (var i=0;i console.log(arr[i]); } //forE ...

  6. 遍历迭代Api | 数组遍历汇总

    遍历迭代Api,它们的作用,应用场景,参数,以及返回值分别是什么. forEach.map.some.every.filter(今天的主角) 我们统一设定一个初始数组: let array = [1, ...

  7. c语言对用下标法二维数组遍历,二维数组遍历:下标法与指针法的较量

    在图像的采集中,常常需要用到二维数组,这里数组的遍历是指按照一定的顺序访问数组中所有的元素. 在众多的遍历方法中,下标法和指针法是两种常用的方法.但在使用的时候,我们只需要选择其中的一种,那么如何选择 ...

  8. C语言 数组遍历 - C语言零基础入门教程

    目录 一.数组遍历原理 二.数组遍历实战 1.遍历数组查询数组中的元素 2.遍历数组修改数组中的元素 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语 ...

  9. 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )

    文章目录 一.二维数组 1.二维数组声明及初始化 2.二维数组遍历 3.二维数组排序 二.完整代码示例 一.二维数组 前几篇博客中 , 介绍的是指针数组 ; 指针数组 的 结构特征 是 , 数组中的每 ...

最新文章

  1. 图灵奖得主Hamming对于少数人获得重大成果原因的思考,送给此刻克服迷惘坚持前行的你...
  2. 震惊!EfficientDet终于开源了!
  3. Kafka集群环境搭建
  4. php静态文件怎么生成器,[新姿势]我用过的静态站点生成器们
  5. DeepWalk: Online Learning of Social Representations-2
  6. sublime安装markdown
  7. 去除maven父依赖_如何在Maven中从父项目中排除依赖项?
  8. 【集训队作业】IOI 2020 集训队作业 试题泛做 8
  9. 计算机屏保后无法再次启动,电脑开机一直停留在屏保 电脑问题的原因以及解决方法...
  10. ssm mysql项目实战_ssm项目实战_ssm项目实战教程_ssm项目实战视频教程 _课课家
  11. 面试阿里,你必须知道的背景知识——双非上岸阿里巴巴系列
  12. 计算机科学理论数学研讨会,2017年奇异摄动理论及其应用学术研讨会会议-上海交通大学数学系.DOC...
  13. python生成简单二维码_使用Python生成个性二维码
  14. 买天猫网店转让商标需要注意的
  15. 人工智能实战2019第七次作业(OpenPAI) 16721088 焦宇恒
  16. 富勒烯化聚甲基苯基硅烷、共轭聚合物-富勒烯
  17. 电脑连上网,可以登录qq、微信,但是打不开网页,怎么办?
  18. 进阶篇:3.9)3d打印件设计
  19. 【反编译系列】四、反编译so文件(IDA_Pro)
  20. qt套件中未设置qt版本, NO C++ compiler set in kit

热门文章

  1. 生命周期 用户可以操作dom_当面试官问:能否介绍下Vue生命周期时,该如何回答...
  2. linux vim打开乱码,linux下解决vim打开文件乱码现象
  3. 小米air耳机重新配对_平价蓝牙耳机品牌,百元平价蓝牙耳机推荐
  4. java 双等于 equals_在Java中等于equals vs Arrays.equals
  5. 现有类 成 mfc类_女人不想成“黄脸婆”,4类食物是衰老“催化剂”,女人尽量远离_氧化...
  6. java开启一个线程_【jdk源码分析】java多线程开启的三种方式
  7. 鸿蒙系统 塞班,华为鸿蒙系统来了:安卓系统会成为下一个“塞班”吗?
  8. oracle根据当前月份往前,oracle获取系统日期--当前时间+前一天+当前月+前一个月...
  9. php 筛选搜索,筛选——搜索
  10. Linux计算内存,正确计算linux系统内存使用率