深入了解PHP中的Array数组和foreach


Posted in PHP onNovember 06, 2016

1. 了解数组

PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。详细的解释可参见:PHP.net中的Array数组    。

2.例子:一般的数组

这里,我通过一个简单的例子,并使用图形方式来了解数组。

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo var_dump($a);

深入了解PHP中的Array数组和foreach深入了解PHP中的Array数组和foreach

 [注]:使用箭头描述数组$a各个单元对应某一内存地址的数据值(实际上,它内部结构采用HashTable结构,可以参考鸟哥写的PHP中的Hash算法)。

3.例子:在数组定义中,添加引用。

$x = 'x';
$a = array(3 => 'a', 1 => &$x, 2 => 'c');

echo "<hr>";
echo var_dump($a);

$x = 'y';
echo var_dump($a);

数组$a中的第2个单元$a[1]与$x对应的是同一个数据,使用var_dump($a)的时候,会看到数组的第2个单元多个&符号,即&string(1) "x",表示引用。

当 修改$x的值='y',也等同于修改$a[1]的值='y'。

下图可以清楚的描述这一变化:

深入了解PHP中的Array数组和foreach

4.例子:使用foreach遍历数组。

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => $value) {
  echo "$key => $value <br>";

}

深入了解PHP中的Array数组和foreach

每次循环中,当前数组中单元的值被赋给 $value ,单元的key被赋给$key。如下图描述:

深入了解PHP中的Array数组和foreach

【注:】灰色虚箭头表示赋予某一值。

 5.例子:在foreach遍历数组中,使用引用赋值。

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => &$value) {
  $value.='n';
  echo "$key => $value <br>";

}

深入了解PHP中的Array数组和foreach

每次循环中, $value 都指向当前数组中单元的值,再执行“ $value.='n'; ”代码 ,如下图描述:

深入了解PHP中的Array数组和foreach

6.例子:对例子5的进一步分析。

在例子5,foreach遍历数组完成后,不会自动销毁$value变量,与数组$a最后一个单元$a[2]指向同一个数据。

这时候改变$value的值,也就是改变了$a[2]的值。

$value='m';

echo "<hr>";
echo "\$value=$value <br>";
echo var_dump($a);

深入了解PHP中的Array数组和foreach

深入了解PHP中的Array数组和foreach

实例验证, 数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。

7.小结

以上例子,只是描述php中的array数组和foreach的一些特性。学习最后,感觉php中的array数组和foreach不同于别的编程语言,不能使用类似C语言的结构分析PHP。

以上就是小编为大家带来的深入了解PHP中的Array数组和foreach全部内容了,希望大家多多支持三水点靠木~

PHP 相关文章推荐
什么是MVC,好东西啊
May 03 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
php中session使用示例
Mar 29 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
php实现监控varnish缓存服务器的状态
Dec 30 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
Mar 18 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
如何用PHP实现多线程编程
May 26 PHP
PHP运行模式汇总
Nov 06 #PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 #PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 #PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 #PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
Nov 05 #PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
Nov 05 #PHP
PHP实现一个简单url路由功能实例
Nov 05 #PHP
You might like
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
PHP文件操作方法汇总
2015/07/01 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
python获取图片颜色信息的方法
2015/03/18 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
商务英语专业应届毕业生求职信
2013/10/28 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
求职信标题怎么写
2014/05/26 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
详解 TypeScript 枚举类型
2021/11/02 Javascript
python多线程方法详解
2022/01/18 Python
oracle重置序列从0开始递增1
2022/02/28 Oracle
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电
TypeScript 内置高级类型编程示例
2022/09/23 Javascript