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重新实现PHP脚本引擎内置函数
Mar 06 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
php中stream(流)的用法
Mar 25 PHP
PHP通过串口实现发送短信
Jul 08 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
PHP实现GIF图片验证码
Nov 04 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
PHP获取文本框、密码域、按钮的值实例代码
Apr 19 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP实现权限管理功能示例
Sep 22 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
JS跨域总结
2012/08/30 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
javascript简易画板开发
2020/04/12 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
python求最大值最小值方法总结
2019/06/25 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
详解Django模版中加载静态文件配置方法
2019/07/21 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
教师党员承诺书
2014/03/25 职场文书
高中教师评语大全
2014/04/25 职场文书
运动会入场口号
2014/06/07 职场文书
体育运动口号
2014/06/09 职场文书
绿色出行口号
2014/06/18 职场文书
计划生育标语
2014/06/23 职场文书
小学体育组工作总结
2015/08/13 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
python套接字socket通信
2022/04/01 Python