PHP 第二节 数据类型之数组


Posted in PHP onApril 28, 2012

PHP 中的 数组 实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。数组元素的值也可以是另一个数组。树形结构和多维数组也是允许的。

可以用 array() 语言结构来新建一个 array。它接受任意数量用逗号分隔的 键(key) => 值(value) 对。

key 可以是 integer 或者 string。如果key是一个 integer 的标准表示,则被解释为整数(例如 "8" 将被解释为 8,而 "08" 将被解释为 "08")。key 中的浮点数被取整为 integer。在 PHP 中索引数组与关联数组是相同的,它们都可以同时包含整型字符串的下标。

值可以是任意的 PHP 类型。

如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。

使用 TRUE 作为键名将使 integer 1 成为键名。使用 FALSE 作为键名将使 integer 0 成为键名。使用 NULL 作为键名将等同于使用空字符串。使用空字符串作为键名将新建(或覆盖)一个用空字符串作为键名的值,这和用空的方括号不一样。

不能用数组和对象作为键(key)。这样做会导致一个警告:Illegal offset type

用方括号的语法新建/修改

如果 $arr 还不存在,将会新建一个。这也是一种定义数组的替换方法。要改变一个值,只要给它赋一个新值。如果要删除一个键名/值对,要对它用 unset()

Note:如果给出方括号但没有指定键名,则取当前最大整数索引值,新的键名将是该值 + 1。如果当前还没有整数索引,则键名将为 0。如果指定的键名已经有值了,该值将被覆盖。

注意这里所使用的最大整数键名不一定当前就在数组中。它只要在上次数组重新生成索引后曾经存在过就行了。

应该始终在用字符串表示的数组索引上加上引号。例如用 $foo['bar'] 而不是 $foo[bar]。但是为什么 $foo[bar] 错了呢?

原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'-注意引号),而 PHP 可能会在以后定义此常量,不幸的是你的代码中有同样的名字。它能运行,是因为 PHP 自动将裸字符串(没有引号的字符串且不对应于任何已知符号)转换成一个其值为该裸字符串的正常字符串。例如,如果没有常量定义为 bar,PHP 将把它替代为 'bar' 并使用之。

PHP 相关文章推荐
PHP 遍历文件实现代码
May 04 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
Jul 28 PHP
php计算函数执行时间的方法
Mar 20 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
php简单备份与还原MySql的方法
May 09 PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
PHP实现本地图片转base64格式并上传
May 29 PHP
PHP 第二节 数据类型之字符串类型
Apr 28 #PHP
PHP 第二节 数据类型之数值型
Apr 28 #PHP
PHP 第一节 php简介
Apr 28 #PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 #PHP
php实现rc4加密算法代码
Apr 25 #PHP
PHP filter_var() 函数 Filter 函数
Apr 25 #PHP
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 #PHP
You might like
PHP新手上路(二)
2006/10/09 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
js时间控件只显示年月
2017/01/08 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
python使用selenium实现批量文件下载
2019/03/11 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
传播学毕业生求职信
2013/10/11 职场文书
合伙经营协议书范本
2014/04/18 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
对学校的意见和建议
2015/06/04 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python