详解PHP对数组的定义以及数组的创建方法


Posted in PHP onNovember 27, 2015

传统上把数组(array)定义为一组有某种共同特性的元素,这里的共同特性包括相似性(车模、棒球队、水果类型等)和类型(例如所有元素都是字符串或整数)等,每个元素由一个特殊的标识符来区分,这称为健(key)。请注意,上面这句话中的传统上一词,因为现在可以摒弃这种定义,数组结构中可以包括完全无关的元素。PHP则更进一步,数组中的元素甚至可以不属于同一种类型。例如,一个数组可能包含州名、邮政编码、考试成绩或扑克牌等元素。

每个实体包含两个项:前面提到的健(key)和值(value)。可以通过查询键来获取其相应的值。这些键可以是数值(numerical) 健或关联(associative)健。数值键与值没有真正的联系,它们只是值在数组中的位置。例如,一个数组中包含按字母顺序排列的水果名,键0表示apple,键2表示pear。使用PHP语法,该数组如下:

$fruits = array(
 "0"=>"apple",
 "1"=>"banana"
 "2"=>"pear"
 );

使用数组索引,可以如下引用第一个元素(apple):

$fruits[0]

PHP的数值索引组以位置0起始,而不是1。

与此不同的是,关联键与值有一定关系,而不是值在数组中的位置。使用数值索引值不可行时,以关联的方式来映射数组会特别方便。例如,你可能希望创建一个将水果缩写映射到水果名的数组,如AP/apple、BA/banana和PE/Pear。使用PHP语法,该数组如下:

$fruits = array(
 "AP"=>"apple",
 "BA"=>"banana",
 "PE"=>"pear"
 );

可以如下引用apple:

$fruits["AP"];

还可以创建包含数组的数组,这称为多维数组(multidimensional arrays)。例如,可以使用一个多维数组存储水果的信息。使用PHP语法,该数组如下:

$fruits = array(
  "apple"=>array(
 "name"=>"apple",
 "color"=>"red"
 ),
 "banana"=>array(
 "name"=>"banana",
 "color"=>"yellow"
 )
);

然后可以如下引用apple的color:

$states["apple"]["color"];

这将返回以下值:

red

你自然会想知道遍历数组的方法。PHP提供了很多遍历数组的方法。无论使用哪一种方法,要记住,它们都依赖于一种称为数组指针(array pointer)的特性。数组指针就如同书签,告诉你正在检查的数组位置。你并不是直接操作数组指针,而是使用内置的语言特性或函数来遍历数组。但是,理解这个基本概念很有用。

数组是PHP最重要的数据结构之一,数组在PHP的用处很广泛。与其他很多语言的数组实现方式不同,PHP不需要在创建数组时指定其大小。事实上,因为PHP是一种松散类型的语言,所以甚至不需要在使用数组前先行声明,尽管没有限制,PHP仍提供了正式和非正式的数组声明方法。两个方法各有优点,都值得学习。下面将分别讨论这两种方法,首先来介绍非正式的方法。

要引用PHP数组中的各个元素,可以用一对中括号来指示。因为数组没有大小限制,所以只需建立引用就可以创建数组,例如:

$fruits[0] = "apple";

然后,可以如下显示数组$fruits的第一个元素:

echo $fruits[0] = "apple";

接下来,可以为数组索引映射新值,从而添加其他的值,如下:

$fruits[1] = "banana";
$fruits[2] = "pear";

有趣的是,如果认为索引值是数组索引而且是递增的,还可以在创建时省略索引值:

$fruits[] = "apple";
$fruits[] = "banana";
$fruits[] = "pear";

用这种方式创建关联数组也同样很简单,只不过必须一直使用键。下面的实例创建了一个数组,它将水果映射到其颜色:

$fruits["apple"] = "red";
$fruits["banana"] = "yellow";
$fruits["pear"] = "yellow";

使用array()创建数组

array()函数接受0个或多个元素作为输入,返回一个包含这些收入元素的数组。其形式如下:

array array([item1,[,item2…[,itemN]]])

下面是一个使用array()创建索引数组的例子:

$fruits = array("apple","banana","pear");

还可以使用array()创建一个关联数组,如下:

$fruits = array(
 "AP"=>"apple",
 "BA"=>"banana",
 "PE"=>"pear"
 );
PHP 相关文章推荐
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
Jun 24 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
PHP Header用于页面跳转时的几个注意事项
Oct 21 PHP
php 自定义错误日志实例详解
Nov 12 PHP
php二维码生成以及下载实现
Sep 28 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
Jul 30 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 PHP
PHP加MySQL消息队列深入理解
Feb 27 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 #PHP
PHP编程中的__clone()方法使用详解
Nov 27 #PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 #PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 #PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 #PHP
php实现遍历多维数组的方法
Nov 25 #PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 #PHP
You might like
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
Js动态创建div
2008/09/25 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
python的id()函数介绍
2013/02/10 Python
python简单实例训练(21~30)
2017/11/15 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
为什么相对PHP黑python的更少
2020/06/21 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
Python self用法详解
2020/11/28 Python
python基于openpyxl生成excel文件
2020/12/23 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
会计自我鉴定
2013/11/02 职场文书
班组长工作职责
2013/12/25 职场文书
洗煤厂厂长岗位职责
2014/01/03 职场文书
机电一体化专业求职信
2014/07/22 职场文书
接待员岗位职责范本
2015/04/15 职场文书
导游词之昭君岛
2020/01/17 职场文书
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏