深入了解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 相关文章推荐
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
php查询ip所在地的方法
Dec 05 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 PHP
PHP tp5中使用原生sql查询代码实例
Oct 28 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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中sprintf与printf函数用法区别解析
2014/02/17 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
2015/12/19 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
use jscript List Installed Software
2007/06/11 Javascript
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
python在命令行下使用google翻译(带语音)
2014/01/16 Python
python学习 流程控制语句详解
2016/06/01 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
计划生育宣传标语
2014/06/21 职场文书
高校教师个人总结
2015/02/10 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
合作意向书怎么写
2019/06/24 职场文书
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers
SQL Server Agent 服务无法启动
2022/04/20 SQL Server