PHP数组基本用法与知识点总结


Posted in PHP onJune 02, 2020

本文实例讲述了PHP数组基本用法与知识点。分享给大家供大家参考,具体如下:

初识数组

  • 概念: 数组就是一个可以存储一组或一系列数值的变量
  • 数组组成: 数组是由一个或多个数组元素组成的
  • 数组元素: 一每个数组由键(Key)和值(Value)构成
  • 键: "键"为元素的是被名称,也被称为数组下标
  • 值: “值”为元素的内容
  • 映射:“键”和“值”之间存在一种对应关系,称之为映射
  • 类型划分: 根据键的数据类型,可以将数组划分为索引数组和关联数组,前者使用数字作为键,后者使用字符串作为键。

1. 索引数组

索引数组: 指键名为整数的数组。默认情况下,索引数组的键名是从0开始,并依次递增。它主要适用于利用位置来标识数组元素的情况。另外,索引数组的键名也可以自己指定

2.关联数组

关联数组: 指键名为字符串的数组。通常情况下,关联数组元素的“键”和“值”之间有一定的义务逻辑关系。因此,通常使用关联数组储存一系列具有逻辑关系的变量。关联数组的“键”都是字符串,并与“值”之间具有意义对应的关系

数组的基本使用

1. 创建数组的方式

  • 使用array()函数 创建数组
  • 赋值方式
  • 短数组定义法(php5.4增加的)

1.数组的创建——array()语言结构方式

array()语言结构中的数组元素使用“键=>值”的方式进行表示,各元素之间使用逗号进行分割。

//定义索引数组
$fruits = array('apple', 'grape', 'pear'); // 省 略键名
$sports = array(2 => 'basketball', 4 => 'swimming'); // 指定键名

数组在省略键名的设置时,默认从0开始,依此递增加1,因此该数组元素的键名依次为“0、1、2”。
除此之外,还可以根据实际需求自定义数组元素的键名,如上述示例中的$sports数组变量,将其第1个元素键名设置为2,第2个元素的键名设置为4

2. 数组的定义——array()语言结构方式

//定义关联数组
$info = array('id' => 10, 'name' => 'Tom', 'tel' => 18810888188);

在定义关联数组时 “键”则有明确的数据类型要求,具体如下。

  • 键只能是整型或字符串型的数据,如果是其他类型,则会执行类型自动转换
  • 合法整型的字符串会被转为整型,如“2”转为2,而“02”则不会被转换
  • 浮点数会被舍去小数部分直接转换成整型,如“2.6”转为2
  • 布尔类型的true会被转为1,false转为0
  • NULL类型会被转为空字符串
  • 若数组中存在相同键名的元素时,后面的元素会覆盖前面元素的值

在定义数组时,还可以定义没有任何元素的数组,以及既有索引表示方式、又有关联表示方式的数组元素。

//定义混合数组
$temp = array();
$mixed = array(2, 'str', 'id' => 5, 5 => 'b', 'a');
  • $mixed数组的元素“b”指定了数字键名为“5”
  • “b”元素后的“a”元素会自动将前面最大的数字键名加1后,作为其键名,即5+1得到键名6。
//定义多维数组
$data = array(
 0 => array('name' => 'Tom', 'gender' => '男'),
 1 => array('name' => 'Lucy', 'gender' => '女'),
 2 => array('name' => 'Jimmy', 'gender' => '男')
);

3. 数组的定义——赋值方式

使用赋值方式定义数组,实际上就是创建一个数组变量,然后使用赋值运算符直接给变量赋值。

//赋值方式
$arr[] = 123;  // 存储结果:$arr[0] = 123
$arr[] = 'hello';  // 存储结果:$arr[1] = 'hello'
$arr[4] = 'PHP';  // 存储结果:$arr[4] = 'PHP'
$arr['name'] = 'Tom'; // 存储结果: $arr['name'] = 'Tom'
$arr[] = 'Java';  // 存储结果:$arr[5] = 'Java'

赋值方式定义数组就是单独为数组元素赋值。需要注意的是,赋值方式不能定义一个空数组。

4. 数组的定义——短数组定义法

短数组定义法([])与array()语法结构相同,只需将array()替换为[]即可

//短数组定义法
 // 相当于:array('wind', 'fine')
$weather = ['wind', 'fine'];
// 相当于:array('id' => 12, 'name' => 'PHP')
$object = ['id' => 12, 'name' => 'PHP'];
// 相当于:array(array(1, 3), array(2, 4))
$num = [[1, 3], [2, 4]];

2.访问数组

数组定义完成后,若想要查看数组中某个具体的元素,则可以通过“数组名[键]”的方式获取。

```
//数组名[键]
$sub = ['PHP', 'Java', 'C', 'Android'];
$data = ['goods' => 'clothes', 'num' => 49.90, 'sales' => 500];
echo $sub[1]; // 输出结果:Java
echo $sub[3]; // 输出结果:Android
echo $data['goods']; // 输出结果:clothes
echo $data['sales']; // 输出结果:500
```

若要一次查看数组中的所有元素,则可以利用前面学习过的输出语句函数print_r()和var_dump(),并且通常情况下为了使输出的函数按照一定的格式打印,查看时经常与pre标记一起使用。

3.遍历数组

所谓遍历数组就是一次访问数组中所有元素的操作。通常情况下,使用foreach()语句完成数组的遍历。

//方式一
foreach (数组名称 as 键 => 值) {
  // 处理语句
}
//方式二
foreach (数组名称 as 值) {
  // 处理语句
}

“键”和“值”的变量名可以根据实际情况随意设置

4.数组的删除

在数组定义完成后,有时也需要根据实际情况去除数组的某个元素。

5.数组操作符

不仅前面讲解的标量数据类型可以进行比较运算,数组这种复合数据类型也可以进行运算,不过数组有其专门提供的数组操作符进行对应的运算。

PHP数组基本用法与知识点总结

“+”为联合运算符,用于合并数组,如果出现下标相同的元素,则保留第1个数组内的元素。

$num = [2, 4];
$alp = ['a', 'b', 'c'];
$mer1 = $num + $alp;
$mer2 = $alp + $num;
print_r($mer1); // 输出结果:Array ( [0] => 2 [1] => 4 [2] => c ) 
print_r($mer2); //

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
浅谈PHP 闭包特性在实际应用中的问题
Oct 30 PHP
php设计模式 Adapter(适配器模式)
Jun 26 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
浅析PHP微信支付通知的处理方式
May 25 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
php继承中方法重载(覆盖)的应用场合
Feb 09 PHP
PHP Try-catch 语句使用技巧
Feb 28 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
PHP中的self关键字详解
Jun 23 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 #PHP
PHP与Web页面交互操作实例分析
Jun 02 #PHP
PHP Web表单生成器案例分析
Jun 02 #PHP
一文看懂PHP进程管理器php-fpm
Jun 01 #PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 #PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 #PHP
php使用自带dom扩展进行元素匹配的原理解析
May 29 #PHP
You might like
php zend解密软件绿色版测试可用
2008/04/14 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
node.js操作MongoDB的实例详解
2017/10/11 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
详解vue路由
2020/08/05 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
Python类的继承用法示例
2019/01/31 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
幼儿园教师获奖感言
2014/03/11 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers