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 相关文章推荐
配置支持SSI
Nov 25 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
抓取并下载CSS中所有图片文件的php代码
Sep 26 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
php中的登陆login实例代码
Jun 20 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
thinkPHP模板引擎用法示例
Dec 08 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
Yii框架分页实现方法详解
May 20 PHP
php实现微信支付之退款功能
May 30 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
如何开发一个虚拟域名系统
2006/10/09 PHP
php str_pad 函数使用详解
2009/01/13 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
php目录拷贝实现方法
2015/07/10 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
在js中使用"with"语句中跨frame的变量引用问题
2007/03/08 Javascript
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
Python 列表(List)操作方法详解
2014/03/11 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
《匆匆》教学反思
2014/02/22 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
基层党员对照检查材料
2014/09/24 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL