数组可以存入多个不同类型的数据,是一个复合数据类型。
我们可以使用array()来初始化数组,每个数组元素之间使用逗号分隔
在PHP5.4版本之后,数组的初始化更为简洁,用中括号 [] 来初始化
我们来创建一个简单的数组:
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $array=array(100,1.34,true,"PHP中文网",); echo '<pre>'; var_dump($array); echo '<pre/>'; ?>
在上例中,我们发现我们存入了:
1. 整型
2. 浮点
3. 布尔
4. 字符串
注:上例中echo pre这个标签的主要目的是为原样输出,格式展示的更好看,更清晰。
我们对着程序运行的结果看一下:
1. array(size = 4) 说明里面有4个元素
2. 0 => int 100我们知道int是整型的意思,100是一个整型的数值。那前面的0,1,2,3和=>代表什么意思呢?
3. 最新前的0,1,2,3代表的是值的读取标识号,我们称之为下标或者键(英文:key)
4. => 是一个符号标准叫法叫作:键值对应符。因此,以后再看到 0=> int 1 可以这样来说。 下标访问符0对应整型的1。
5. 我们还称数组里面的键值对为元素,元素就是键值对的组合。
通过上例,我们就完成了数组其中的一种声明方式:索引数组的声明。所谓索引数组:就是下标全为整型的数组。
小知识
索引数组的下标必须要从0开始吗?
答:这个问题其实不然,索引数组并不一定要从0开始。
那如何能够不从0开始呢?
答:需要用到大家在上面学的一小块知识哟。就是键值对应符。如下
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $kele = array(5=>'只有不断努力才能博得未来',10 => 'php.cn', 'PHP中文网' ,'好好学习哦', 19 => '去PHP中文网学习PHP'); //打印显示$kele echo '<pre>'; var_dump($kele); echo '</pre>'; ?>
通过上面的例子可以看出,我们的索引数组下标是从5开始的哦
我们来总结规律:
索引数组若不强制声明他的下标,他的下标是从0开始的。(我们的第一个数组的值:只有不断努力才能博得未来。这个值的下标为0)。
2. 如果我指定过下标他的下标就为我指定的值。如下标为5,10和下标为19的,都是我指定过的值。
3. 若某个值(如php.cn),强制指定了下标(下标为10)。在它后面加上的值(PHP学院),不指定下标的话。他们的下标增
长规律为最大值+1。
关联数组
索引数组适当的变一下形就出现了关联数组。只要数组里面有一个为字符串的数组,就为关联数组。
那我们来声明一下关联数组。跟索引数组的声明方式完成一样。不过不同的是,必须要指定字符串的下标和必须要使用键值对应符。
实例
<?php $arr=[ //用[]创建数组 'name'=>'Tom', 'age'=>'18', 'gender'=>'male' ]; echo "<pre>"; var_dump($arr) ; echo"</pre>" ?>
我们通过实验知道:
1. 声明关联数组是 键名 => 值
2. 在关联数组可以有索引数组的元素
数组是我们最常用到的类型,那如何计算某个一维数组的个数呢。其实我们可以用到我们之前学过的数学函数里面的一个:count()。
count($变量) 函数用于返回数组的长度(元素数):
实例
<?php $name=Array('tom','andy','jack'); echo count($name); ?>
用for循环遍历索引数组
遍历二字,从字面解释就是一个接一个全读访问一次,显示出来。
因为for循环是一个单纯的计数型循环,而索引数组的下标为整型的数值。因此,我们可以通过for循环来遍历索引数组。
实例
<?php $arr=Array('tom','andy','jack'); $arrlength=count($arr); for($x=0;$x<$arrlength;$x++){ echo $arr[$x]; echo "<br/>"; } ?>
通过上面的例子,我们就把数组进行了循环。
因为下标是从0开始的,定义$i=0 。每次循环的时候让$i 加1 ,但是必须要小于3,因为数组下标的最大值为2。
这样,我们就学会了了对索引连续下标数组的遍历。
那么问题来了:
那关联数组怎么办? 如果索引数组的下标不连续怎么办?
这就要用到我们下面所学的知识了。
foreach的基本语法
有一个布尔型循环是专门用来循环数组的。这个循环的基本语法就是foreach基本语法
foreach( 要循环的数组变量 as [键变量 =>] 值变量){
//循环的内容
}
这是一个固定用法,将要循环的数组放进去。
as 是一个固定的关键字
后面的键变量是可选的,随意定义一个变量,每次循环的时候,foreach这个语法会把键取出来赋值到键变量里面
后面的值变量是必填的。每次循环的时候,会把值放到值变量里面。
我们下面用代码来举例子,加强对这个语法的理解。
实例
?php $arr=[ 'name'=>'Tom', 'age'=>'18', 'gender'=>'male' ]; foreach($arr as $key=>$value){ echo $key.": ".$value."<br />"; }; ?>
通过上面的运行结果我们得出下面的结果:
1. 每次循环的时候,把下标赋值给了变量$key,把值的变量赋值给了变量$value
2. 循环一次读一次键和值。读到最后,发现没有可以读取的数组元素后,停止循环遍历数据。
注意:$key 和$value并不是变量名必须得为这两个名字。你命名为其他的也可以,如 $kai => $wen是一样的。 你要清楚键赋值
给了哪个变量,值赋值给了另外的哪个变量。
通过foreach遍历连续的索引数组,如下例:
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $data = array( 0 => '中国', 100 => '美国', 20 => '韩国', 300 => '德国', ); foreach($data as $k => $v){ echo $k . '------' . $v .'<br />'; } ?>
按照foreach的结果推理与刚刚做的关联数组的结果是一样的。
不同的是不连续的索引数组。每读一次数组的元素,将当次循环的下标赋值给了变量$k,值赋值给了变量$v。每读将键和值输
出,然后显示出来。循环一次向后移动一次下标。读取至最后,退出执行。
多维数组
我们将在 PHP 高级教程中讲解多维数组。
完整的 PHP 数组参考手册
如需完整的数组函数参考手册,请访问我们的 PHP 数组参考手册。
该参考手册包含每个函数的简要描述、使用示例。