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读取RSS feed的代码
Aug 01 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
PHP导入导出Excel代码
Jul 07 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
php array_map使用自定义的函数处理数组中的每个值
Oct 26 PHP
php版微信小店API二次开发及使用示例
Nov 12 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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实现即时输出、实时输出内容方法
2015/05/27 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python入门学习之字符串与比较运算符
2015/10/12 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
Python调用服务接口的实例
2019/01/03 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
python批量下载抖音视频
2019/06/17 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
庆元旦迎新年广播稿
2014/02/18 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
代理人委托书
2014/09/16 职场文书
体育个人工作总结
2015/02/09 职场文书
《假如》教学反思
2016/02/17 职场文书