数组在之前我们让大家记住两个观点:

1.数组可以存入多个不同类型的数据,是一个复合数据类型。

2.数组的英文是array,学一了一下最简单的数组声明。

那我们来进行简单的回顾:<?php

$shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇');

echo '

';

var_dump($shu);

echo '

';

?>

在上例中,我们发现我们存入了:

1.整型

2.浮点

3.布尔

4.字符串

注:上例中echo pre这个标签的主要目的是为原样输出,格式展示的更好看,更清晰。

我们用var_dump()打印出来显示看一下效果:

我们仔细观察一下上面的这张图,你会发现以下几个特点:

1.array(size = 4) 说明里面有4个元素

2.0 => int 1 我们知道int是整型的意思,1是一个整型的数值。那前面的0,1,2,3和=>代表什么意思呢?

3.最新前的0,1,2,3代表的是值的读取标识号,我们称之为下标或者键(英文:key)

4.=> 是一个符号标准叫法叫作:键值对应符。因此,以后再看到 0=> int 1 可以这样来说。 下标访问符0对应整型的1。

5.我们还称数组里面的键值对为元素,元素就是键值对的组合。

哦耶! 数组好像还挺好学的,全是一些规律哟。

我们通过上例,其实你一不小心的就完成了数组其中的一种声明方式:索引数组的声明哟。

所谓索引数组:就是下标全为整型的数组。

索引数组的下标必须要从0开始吗?

答:这个问题其实不然,索引数组并不一定要从0开始。

那如何能够不从0开始呢?

答:需要用到大家在上面学的一小块知识哟。就是键值对应符。我们来动手写写。<?php

$kele = array('只有不断努力才能博得未来',10 => 'NoAlike', 'PHP中文网' , '去PHP中文网学PHP', 19 => '凤姐和芙蓉我都爱' , '杨幂我最爱');

//打印显示$kele

echo '

';

var_dump($kele);

echo '

';

?>

上例中,我们一不小心就写了一个索引数组。不过索引数组的下标不是从0 开始的,而是从10开始的。

不过上面的例子中,我们觉得写的不优美,我们可以将代码写的更加优美一些,格式更加清晰一些。<?php

$kele = array(

'只有不断努力才能博得未来',

10 => 'NoAlike',

'PHP中文网' ,

'去PHP中文网学PHP',

19 => '凤姐和芙蓉我都爱' ,

'杨幂我最爱'

);

//打印显示$kele

echo '

';

var_dump($kele);

echo '

';

?>

这样是不是看得更清楚,一行对应一个数组的值。

我们执行一下代码,看一下效果:

通过上面的效果,我们来总结规律:

1.索引数组若不强制声明他的下标,他的下标是从0开始的。(我们的第一个数组的值:只有不断努力才能博得未来。这个值的下标为0)。

2.如果我指定过下标他的下标就为我指定的值。如下标为10和下标为19的,都是我指定过的值。

3.若某个值(如NoAlike),强制指定了下标(下标为10)。在它后面加上的值(PHP中文网),不指定下标的话。他们的下标增长规律为最大值+1。

例如:凤姐和芙蓉我都爱的下标为19.我在后面加上了:杨幂我最爱。它的下标自动增长为了11。

不知不觉,你已经学会了索引数组的创建,神奇吧?真为你感到高兴!

向索引数组中增加元素

学习完了索引数组的创建,接下来我们学习索引数组的增加、修改和删除。<?php

$minren = array(

'杨幂',

'王珞丹',

'刘亦菲',

'黄圣依'

);

//如何向这$minren这个数组中增加元素呢

//猜猜范冰冰的下标是多少?

$minren[] = '范冰冰';

$minren[100] = '范爷';

//它的下标又为几呢?

$minren[] = '李晨';

?>

总结:

1.向索引数组中增加元素用: 数组变量名[]、数组变量名[键值]这两种方式来增加元素

2.键值的增长规则与之前的规则一样。都是最大值加1的原则。

向索引数组中删除元素

我们还拿刚刚的数组来举例:<?php

$minren = array(

'杨幂',

'王珞丹',

'刘亦菲',

'黄圣依',

'范冰冰'

);

//假设我不喜欢:黄圣依,如何将黄圣依给删掉掉呢?

//如果删除掉后范冰冰的下标为多少呢?

//如果在后面再追加一个元素,会填掉:“黄圣依”留下来的空吗?

unset($minren[3]);

$minren[] = '金星';

echo '

';

var_dump($minren);

echo '

';

?>

看看效果:

1.使用unset删除变量的方式来删除数组里面的值。

2.删除了中间的值,并不会让后面的下标向前自动移动。而是原来的值为多少就为多少

3.删除掉其中的某个值,新加入的值不会替换掉原来的位置,依然遵循最大值加1的原则。

修改值

我们学习最简单的创造、增加和删除。我相信大家一定能够推理出如何修改值了。<?php

$minren = array(

'杨幂',

'王珞丹',

'刘亦菲',

'黄圣依',

'范冰冰'

);

$minren[5] = '范爷';

$minren[2] = '亦菲,不要嫁给韩国人好吗?';

echo '

';

var_dump($minren);

echo '

';

?>

执行上面的代码,输出看看结果。

1.用变量名[键] = 新值。就把数组中的值定的值修改了。

索引数组的其他声明方式

通过上面的例子,我们学习到了数组的声明。我们来学一下数组的其他声明方式。

一、直接用之前未声明的变量,用变量名后面接中括号的方式声明数组。<?php

//直接写一个变量后面加上中括号,声明变量

$qi[] = '可口可乐';

$qi[10] ='百事可乐';

echo '

';

var_dump($qi);

echo '

';

?>

二、每次用array()写的太麻烦了,还可以不用写array哟,更简单。<?php

$minren = [

'杨幂',

'王珞丹',

100 => '刘亦菲',

'黄圣依',

'范冰冰'

];

echo '

';

var_dump($minren);

echo '

';

?>

上面是另外两种写法。当然,你自己喜欢使用哪一种就使用哪一种来声明。

关联数组

索引数组适当的变一下形就出现了关联数组。只要数组里面有一个为字符串的数组,就为关联数组。

通过上例中,我们发现数组的下标只能够为字符串,当然不能够满足我的需求。

假设我想声明一个下标为帅对应陈奕迅这个值。肯定不能满足我的需求。

那我们来声明一下关联数组。跟索引数组的声明方式完成一样。不过不同的是,必须要指定字符串的下标和必须要使用键值对应符。<?php

//声明一下关联数组

$rela = array(

'帅' => '陈奕迅',

'很帅' => '黄晓明',

'灰常灰常帅' => '宁泽涛',

'有男人味的大叔' => '吴秀波',

);

//再来玩玩简洁声明

$drink = [

'美' => '凤姐',

'很美' => '芙蓉姐姐',

'verymei' => '杨幂',

'心中滴女神呀' => '华妃',

100 => '孙俪',

'娘娘',

];

// 输出 $rela

echo '

';

var_dump($rela);

echo '

';

// 输出$drink

echo '

';

var_dump($drink);

echo '

';

?>

我们来实验一下看看最终的结果是什么样的:

我们通过实验知道:

1.声明关联数组是 键名 => 值

2.在关联数组可以有索引数组的元素

3.关联数组中的索引数组的元素后再声明了无下标的元素,依然是最大值+1原则。(观察上图中的值为孙俪、娘娘的两个元素)。

关联数组的增、删、改<?php

$drink = [

'美' => '凤姐',

'很美' => '芙蓉姐姐',

'verymei' => '王涛',

'心中滴女神呀' => '杨澜',

100 => '孙俪',

'娘娘',

];

//追加方式与索引数组是一样的

$drink['ynj'] = '伊能静';

//输出试试

echo '

';

var_dump($drink);

echo '

';

//删除一个试试

unset($drink['verymei']);

echo '

';

var_dump($drink);

echo '

';

//将芙蓉姐姐 改成:心里美才是真的美

$drink['很美'] = '心里美才是真的美';

echo '

';

var_dump($drink);

echo '

';

?>

你动手做做刚刚的实验,你会发现操作方式与索引的操作方式一样。只不过下标在读取有点不一样罢了。

其他的关联数组声明方式<?php

$drink['nf'] = '农夫山泉';

$cocacola = '可口可乐';

//当然可以是变量哟

$drink['kl'] = $cocacola;

$data = array(

'kl' => $cocacola,

);

echo '

';

var_dump($drink);

echo '

';

?>

通过上例我们发现,在关联数组当中也是可以不用array,直接在变量后面接括号。括号里面插入字符串下标,一样也声明成功。

后面插入变量的例子,只不过把字符串变成了变量,当然没有问题。

数组当中插入数组

数组可以插入整型、浮点、字符串,那么数组当中可不可以插入数组呢?

当然可以。

在学习数组的时候,我们定义了这样一组名词。

1.一维数组 数组里面没有其他数组,只有单纯的一些变量或者值。

2.二维数组 数组里面插入了单层的一个数组,或者多个数组

3.三维数组 在数组(A)里面插入了一个数组(B),在B数组里面又插入了一层级的数组(C),这种我们就称为三维数组

4.超过三维的,统统都叫多维数组。

注:索引数组和关联数组当中都可以再插入其他数组,让数组变为多维的。

我们来声明一个一维数组,只有一个维度。索引、关联均可,这个操作大家都很熟。<?php

//一维的索引数组

$data = [1 , 2 , 3 , 4 ,  10 => 250];

//一维的关联数组

$rela = [

'beijing' => '北京',

'shanghai' => '上海',

'tj' => '天津',

];

echo '

';

var_dump($rela);

echo '

';

echo '

';

var_dump($data);

echo '

';

?>

一维数组大家很熟悉,也不难,就是声明数组嘛。二维也不难,只是在数组里面再插一个或多个数组。二维学好了,多维就学好了。<?php

$person = array(

'office' => '办公室',

//注意:插入第一个数组哟

'family' => array(

'爸爸',

'妈妈',

'yeye' => '爷爷',

'nn' => '奶奶',

),

//注意:又插入了一个平级的数组

'jiaotong' => array(

'自行车',

'摩托车',

'汽车',

'飞机',

),

);

echo '

';

var_dump($person);

echo '

';

?>

我们执行一下看看效果:

我们发现变量person 是一个数组类型。有三个元素(size=3)。第一个元素为 office 对应的是一个字符串“办公室”,

第二个元素为family 里面是一个数组,这个数组又有4个元素,值分别为:爸爸、妈妈、爷爷、奶奶。

第三个元素为jiaotong,里面也为一个数组有4个元素,值分别为:自行车、摩托车、汽车、飞机。

好了,二维好声明,只要把格式写对了,确定是在一个数组里面再插入一个数组就好。

那如何访问:爷爷和爸爸这两个值呢?<?php

$person = [

'office' => '办公室',

//注意:插入第一个数组哟

'family' => [

'爸爸',

'妈妈',

'yeye' => '爷爷',

'nn' => '奶奶',

],

//注意:又插入了一个平级的数组

'jiaotong' => [

'自行车',

'摩托车',

'汽车',

'飞机',

],

];

//访问“爸爸”这什值

echo $person['family'][0];

echo '
-----华丽丽的分割线------
';

//访问“爷爷”这什值

echo $person['family']['yeye'];

echo '
-----华丽丽的分割线------
';

//访问“汽车”这什值

echo $person['jiaotong'][2];

?>

我们看看结果如下:

上例大家会发现,访问二维数组不过是按照之前的下标读取方式依次向下读取即可。

先写上变量,中括号写上family这个下标,再写上要访问元素的下标。

三维数组我们说了概念,那我们直接上手实验看看效果:<?php

$area = array(

'china' => array(

'上海',

'湖北',

'天津',

'北京' => array(

'hd' => '海淀',

'朝阳',

'房山',

'cp' => '昌平',

),

'广东' => array(

'深圳',

'广州',

'佛山',

'dg' => '东莞',

),

),

'usa' => array(

'华盛顿',

'旧金山',

'纽约' => array(

'曼哈顿区',

'皇后区',

'布鲁克林区',

),

),

);

echo '

';

var_dump($area);

echo '

';

?>

我们执行一下看看效果:

说明:

在变量$area下有二个数组,一个为china,一个为usa。

在china这个数组里面插入了上海、湖北、天津,又插入了北京和广东。而北京和广东又是一个数组。在北京和广东这两个数组里面分别有不同的元素。

在这usa 这个数组里面插美国的华盛顿、旧金山和纽约。而纽约下面又是一个数组,说明了纽约下面的几个区。

所以说,三维数组就是在数组里面再插入一个数组(A),在A数组里面插入一个数组。

我们接下来看看,如何来读取里面的值。<?php

$area = array(

'china' => array(

'上海',

'湖北',

'天津',

'北京' => array(

'hd' => '海淀',

'朝阳',

'房山',

'cp' => '昌平',

),

'广东' => array(

'深圳',

'广州',

'佛山',

'dg' => '东莞',

),

),

'usa' => array(

'华盛顿',

'旧金山',

'纽约' => array(

'曼哈顿区',

'皇后区',

'布鲁克林区',

),

),

);

//读取华盛顿

echo $area['usa']['0'];

//读取:布鲁克林

echo $area['usa']['纽约'][2];

//读取:昌平

echo $area['china']['北京']['cp'];

//修改cp下标的值改为:西城区

$area['china']['北京']['cp'] = '西城区';

//输出看看原来昌平的值是否发生了变化

echo $area['china']['北京']['cp'];

?>

通过上面我们发现数组学习起来不难。

学习多维数组的难点:

注意格式,将每个维度的换行、缩进弄整齐。就不容易出错了。

【切记】

数组元素间的分割符为逗号,在数组中插入数组的时候,不要在结尾处写成了分号(;)

php中文数组,php数组的定义相关推荐

  1. python定义字符串数组_python数组声明

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 如何在python? 我无法在文档中找到对数组的任何引用... 我正在制作一个小 ...

  2. Go 学习笔记(10)— 数组定义、数组声明、数组初始化、访问数组、数组相等、向函数传递数组

    1. 数组定义 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 2. 声明数组 Go 语言数组声明需要指定元素类型及元素个数,语 ...

  3. js便利关联数组 及数组定义方式 分类

    "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv=& ...

  4. json数组 js html标签,js定义json对象数组 json 数组也是数组 //

    var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]"; var jsonarray = eval('('+js ...

  5. html中js定义数组,javascript数组的定义及操作实例

    数组是一组数据的集合,js中,数组里面的数据是可以 不同类型的 定义数组: 1.通过类实例化来创建数组 var alist01=new Array(1,2,3); 2.通过直接量的方式来创建数组 va ...

  6. linux数组shell数组添加内容,shell数组的定义与应用

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小.类似与C语言,数组元素的下标由0开始编号.获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0.shell 下的多 ...

  7. 【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组类型* 定义数组指针 )

    文章目录 总结 一.使用 数组类型* 定义数组指针 二.完整代码示例 总结 typedef int(ArrayType)[3];ArrayType *p = NULL; 一.使用 数组类型* 定义数组 ...

  8. 【C 语言】数组 ( 数组本质 | 数组长度定义 | 数组初始化 | 编译时初始化 | 显式初始化 - 重置内存 )

    文章目录 一.数组本质 二.数组长度定义 三.数组初始化 1.编译时初始化 2.显式初始化 ( 重置内存 ) 一.数组本质 数组本质 : 类型角度 : 从 数组元素 类型角度分析 , 数组是 相同类型 ...

  9. 领扣-26/27/80/283 数组专题 做好初始定义 双指针 MD

    目录 数组专题:做好初始定义 移动零 Move Zeroes -283 问题 答案 移除元素 Remove Element -27 问题 答案 删除排序数组中的重复项 -26 问题 记录位置法 快慢指 ...

  10. java数组使用实验报告_JAVA数组与类的定义-java实验报告

    JAVA数组与类的定义-java实验报告 JAVA数组与类的定义-java实验报告 .实验目的与要求 1. 熟悉Java类.对象和方法的一般操作练习等. 2. 熟悉数组等的定义和使用. 二.实验内容及 ...

最新文章

  1. 记录第一次在egret项目中使用Puremvc
  2. python 工业自动化 人工智能_浅谈人工智能神经网络与工业自动化
  3. qt c语言程序运行时间,c – 在Qt中计时事件的最佳方法
  4. mysql内部安装workb_centOS系统中下安装mysql workbench图文详细步骤
  5. CUBA在查询语句如何添加参数
  6. Jupyter notebook入门
  7. 技术分享连载(六十四)
  8. Redis系列四、redis的五种数据结构和相关指令之List
  9. 机器学习——k邻近算法(kNN)
  10. 用python算24点及原理详解
  11. 人工智能学习笔记 - 预备篇之高中数学快速复习
  12. 算法/最短路径/Bellman-Ford贝尔曼福特算法
  13. 跟大家聊聊VR全景个人感受
  14. 中北大学朔州校区计算机科学与技术分数线,2020山西中北大学朔州校区研究生推免名额分配公示...
  15. GC0064-51单片机手持可充电GP2Y0A21红外测距离测量报警倒车雷达防撞报警视力保护
  16. 易语言三款浏览器支持库哪款支持页游更好?
  17. MySQL及数据库部分笔记
  18. XSHELL搭建跳板机
  19. 虚拟机中Ubuntu右上角没有网络图标解决方法
  20. OLED液晶显示屏显示汉字

热门文章

  1. TCP/IP重传超时--RTO - SRTT (Smoothed Round Trip Time)
  2. dialog 弹窗关闭事件
  3. kindle电子书200G分享
  4. 人工智能历史回眸:达特茅斯会议
  5. Python3.6支付宝账单爬虫
  6. Android 新浪微博开放平台应用 android签名怎么获得
  7. U盘插入电脑识别不出来,如何解决?
  8. 分位数回归(quantile regression)简介和代码实现
  9. python打开qq并登录_python爬虫入门之qq登陆初探
  10. python爬取豆瓣TOP250