一,什么是数组?
数组是一组数据的集合,把一系列数据组织起来形成一个整体。php中的数组array是一组有序的变量,其中每个变量被称为一个元素。每个元素由一个标识符(键)来区分。数组中的每个实体都存在两项:键和值。这样就可以通过键值获取相应的数组元素,那么这写键是数值键和关联键。
二,声明数组
这里简单说明下输出的各个函数的区别;
echo()
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。
print()
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。
print_r()
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
var_dump()
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
声明数组的方式有两种,一是用array()函数来声名数组,另一种是直接通过为数组元素赋值的方式来声明数组。
<?php header("Content-Type: text/html;charset=utf-8"); $array=array("1"=>"编","2"=>"程","3"=>"词","4"=>"典"); print_r($array); echo "<br>"; echo $array[1]; //输出数组元素的值 echo $array[2]; //输出数组元素的值 echo $array[3]; //输出数组元素的值 echo $array[4]; //输出数组元素的值 ?>
输出
Array ( [1] => 编 [2] => 程 [3] => 词 [4] => 典 )
编程词典
上面就是典型的使用array函数声明数组
<?php $array[1]="编"; $array[2]="程"; $array[3]="词"; $array[4]="典"; print_r($array); //输出所创建数组的结构 ?>
输出
Array ( [1] => 编 [2] => 程 [3] => 词 [4] => 典 )
上面这种是使用直接通过为数组元素赋值的方式来声明数组的。直接通过给数组元素赋值声明数组时,要求同一数组元素中的数组名相同。
这里为了看出我们四个输出的区别我们做个简单的小案例分析
<?php header("Content-Type: text/html;charset=utf-8"); $array=array("1"=>"编","2"=>"程","3"=>"词","4"=>"典"); print_r($array); echo "<br>"; echo $array[1]; //输出数组元素的值 echo $array[2]; //输出数组元素的值 echo $array[3]; //输出数组元素的值 echo $array[4]; //输出数组元素的值 var_dump($array); echo "<br>"; print($array); ?>
Array ( [1] => 编 [2] => 程 [3] => 词 [4] => 典 )
编程词典
array(4) { [1]=> string(3) "编" [2]=> string(3) "程" [3]=> string(3) "词" [4]=> string(3) "典" }
tips:这里数组的键默认是从0开始的然后后面的依次加1,因为本次我们是自定义了键是从1开始的。
Array
从输出的结果我们可以看出print_r()是可以字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。
echo虽然能输出多个值但是都要用逗号隔开,从输出数组中看出一次只能输出一个数组元素的值,如要输出多个只能按照格式echo $array[0].....这样输出
var_dump()函数输出的数据类型和表达式的结构比如我们刚在输出的数组就是输出数据类型array包含4个元素然后值都是字符串类型形成的一个表达式。
三,数组类型
1,数字索引数组(使用数字为键)
2,关联数组(使用字符串为键)
四,输出数组
刚才简单的分享了echo,print,print_r,var_dump的区别这里结合数组简单的在说下。
对于数组的输出我们如果使用echo,print语句的话,这样就只能对数组中的一个元素进行输出,而使用print_r()则可以将整个数组结构进行输出。
当然var_dump()同样可以输出只是输出的格式不同而已
<?php header("Content-Type: text/html;charset=utf-8"); $array=array("1"=>"编","2"=>"程","3"=>"词","4"=>"典"); print_r($array); echo "<br>"; /*echo $array[1]; //输出数组元素的值 echo $array[2]; //输出数组元素的值 echo $array[3]; //输出数组元素的值 echo $array[4]; //输出数组元素的值*/ echo "<br>"; var_dump($array); echo "<br>"; ?>
print_r和var_dump的输出样式
print_r()函数输出 Array ( [1] => 编 [2] => 程 [3] => 词 [4] => 典 )
var_dump()函数输出 array(4) { [1]=> string(3) "编" [2]=> string(3) "程" [3]=> string(3) "词" [4]=> string(3) "典" }
五,数组的构造
数组按照结构分一维数组和二维数组
一维数组:当一个数组的元素是变量时,称这个数组为一维数组。
二维数组:当一个数组的元素是一个数组时,称这个数组是二维数组。
<?php header("Content-Type: text/html;charset=utf-8"); $str = array ( "书籍"=>array ("文学","历史","地理"), "体育用品"=>array ("m"=>"足球","n"=>"篮球"), "水果"=>array ("橙子",8=>"葡萄","苹果") ); print_r ( $str) ; ?>
Array ( [书籍] => Array ( [0] => 文学 [1] => 历史 [2] => 地理 ) [体育用品] => Array ( [m] => 足球 [n] => 篮球 ) [水果] => Array ( [0] => 橙子 [8] => 葡萄 [9] => 苹果 ) )
从输出的结果我们明确的可以看出一维和二维数组的区别了。
六,遍历数组
1,foreach结构遍历数组
如果我们只是输出键值的话这里就要用到echo但是echo每次只能输出一个键值所以我们这里用用到之前学习的循环语句foreach
<?php header("Content-Type: text/html;charset=utf-8"); $url = array('编程词典网'=>'www.mrbccd.com', '编程体验网'=>'www.bcty365.com', '编程资源网'=>'www.bc110.com', ); print_r($url); echo "<br>"; foreach ($url as $link) { echo $link.'<br>'; } ?>
Array ( [编程词典网] => www.mrbccd.com [编程体验网] => www.bcty365.com [编程资源网] => www.bc110.com )
www.mrbccd.com
www.bcty365.com
www.bc110.com
这里我们也能简单的看出foreach结构语句就是把数组的键值一个一个的放入变量link中去,然后变量link就只有上面输出的三个字符串。
2,list()函数遍历数组
我们之前使用的是foreach结构语句来遍历数组赋给其他的变量便于输出值,那么我们使用 list()函数来遍历我们的数组看看呢
这个我们使用list()函数遍历数组都是和each()一起组合使用的,list()函数仅能使用数字索引的数组且从0开始。
七,字符串与数组的转换
1,explode()函数将字符串依指定的字符串或字符切开组成数组
<?php header("Content-Type: text/html;charset=utf-8"); $str = "时装、体闲、职业装"; //定义一个字符串 $strs = explode(",", $str); //应用explode()函数将字符串转换成数组 print_r($strs); //输出数组元素 ?>
Array ( [0] => 时装 [1] => 体闲 [2] => 职业装 )
这里变量str里面定义了几个字符串,然后explode()函数就是将变量str中的字符串从“,”处切开组成数组赋给变量strs,这样把字符串转换成了数组形式。
2,implode()函数将数组的内容组合成一个新的字符串。
<?php header("Content-Type: text/html;charset=utf-8"); $str=array("PHP","编程词典","网址","www.baidu.com"); echo implode(" ",$str); ?>
PHP 编程词典 网址 www.baidu.com
implode()函数将数组中的值全部取出然后使用空格作为分隔符成为字符串用echo输出
八,统计数组元素的个数
count()函数来计算数组中的元素。
<?php header("Content-Type: text/html;charset=utf-8"); $array = array("php" => array("PHP函数参考大全","PHP程序开发范例宝典","PHP数据库系统开发完全手册"), "asp" => array("ASP经验技巧宝典") ); //声明一个二维数组 echo count($array,COUNT_RECURSIVE); //递归统计数组元素的个数 ?>
6
这里count()函数存在两个参数(输入的数组,COUNT_RECURSIVE )如果不加COUNT_RECURSIVE就只能识别一维数组。
array_search()函数用于在数组中搜索指定的值,找到后返回键名,否则返回false。
array_search()函数常用于购物车中,实现对购物车指定的商品数量的修改和删除。
array_pop()函数获取数组中最后一个元素
array_push()函数将数组当作一个栈,将传入的变量压入数组的末尾。
array_unique()函数用于将值作为字符串排序,对每个值只保留第一个键名,忽略所有后面的键名删除后面重复的元素。