深入了解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中iconv函数使用方法
May 24 PHP
IP138 IP地址查询小偷实现代码
Feb 15 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
php查看网页源代码的方法
Mar 13 PHP
CodeIgniter使用smtp服务发送html邮件的方法
Jun 10 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
php实现用户登陆简单实例
Apr 04 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 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
C# Assembly类访问程序集信息
2009/06/13 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
Python中的rfind()方法使用详解
2015/05/19 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Python装饰器用法与知识点小结
2020/03/09 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
日语系毕业生推荐信
2013/11/11 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
安全生产先进个人材料
2014/02/06 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
企业总经理任命书
2014/06/05 职场文书
个人年终总结开头
2015/03/06 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
开学第一周总结
2015/07/16 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android