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 相关文章推荐
多重?l件?合查?(二)
Oct 09 PHP
php表单提交问题的解决方法
Apr 12 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
简单PHP会话(session)说明介绍
Aug 21 PHP
php批量修改表结构实例
May 24 PHP
PHP中的日期时间处理利器实例(Carbon)
Jun 09 PHP
PHP children()函数讲解
Feb 03 PHP
PHP中上传文件打印错误错误类型分析
Apr 14 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 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
PHPlet在Windows下的安装
2006/10/09 PHP
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python获取交互式ssh shell的方法
2019/02/14 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
详解Django 时间与时区设置问题
2019/07/23 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
新闻专业个人求职信
2013/12/19 职场文书
网上开店必备创业计划书
2014/01/26 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
工作保证书怎么写
2015/02/28 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python