楠Go随笔

第九课:PHP学习之数组使用

2017-12-24 18:46:37 admin 阅读 网站首页 > PHP > PHP学习

PHP的之处就在于数组的使用上。

在C语言中对数组的定义就是相同数据类型的集合。也就是说在一些强类型语言中会严格要求容器中存放的数据类型。比如说整型数组里面就只能存放整型数据,然而在PHP中没有对容器内的数据做严格的区分。

定义数组可以用 array 关键字声明,PHP5.3以上支持用中括号[]包括,但是为了兼容 还是统一用array比较好。数组元素之间用,号隔开

<?php
#用 array 定义数组 $arr = array(0,1,2,3); # 看到下面这种方式 也别奇怪 $arr2 = [0,1,2,3];
?>

PHP中数组一共有两种类型。

第一种 索引数组 

    该类型就是的下标是数字。从0开始,如下定义一个索引数组。

<?php
#定义一个索引数组 初始化时依次赋值 第一个值的数组位置是0 依次增加 $arr = array(0,1,2,3,4,5,6,7,8,9,10); #将数组第三个元素打印数来 下标是2 echo $arr[2];
?>

第二种 关联数组

关联数组就是一种字典,在同一个数组当中每一个元素都有一个特殊的标识符来区分(key),通过 key => value 形式操作数据。定义关联数组时需要用=>操作符来赋值。

<?php
#现在我们来声明关联数组 注意要用 => $arr = array('name'=>'nango','age'=>18,'sex'=>'boy'); #把数组中key 为age的元素值打印出来 echo $arr['age'];
?>

当然我们可以将索引数组和关联数组混合在一起使用,构造更复杂的结构。还可以对将数组嵌套在数组元素中构建多维数组,二维数组一般比较常见。

多维数组

PHP数组可以存放基础数据类型也可以存放数组类型,构建成多维数组,以下演示两种定义方式。

<?php
#直接在数组中定义数组 也可以将array 方式 用中括号[]定义 不过得考虑兼容 若会移植到PHP5.3以下 请慎用 $arr = array(     array(0,1,2,3,4,5,6),     array(7,8,9,10,11,12),     array('age'=>28,'name'=>'Miss Li') ); #先定义多个一维数组在赋值给另外一个数组 $name = array('小黄','小黑','小白','小菜'); $work = array('码农','前端','码畜','主管'); $list = array('name'=>$name,'work'=>$work);
?>

PHP内置了许多处理数组的函数,可以方便我们对数组做操作.常见的PHP数组函数如下

函数名作用
array创建数组 如 $arr = array(1,2,3,4)
array_flip交换数组中的键和值,可以用于快速去重
array_search获取元素值的键值 
array_key_exists键值是否存在 可以是索引键值和关联键值
array_keys返回一个包含key列表的索引数组
array_values返回一个包含元素值列表的索引数组
array_rand从数组中随机取出一个或多个元素
array_shift
数组开头移出元素 出队
array_pop数组尾部移出元素 出栈
array_unshift数组头部插入元素 
array_push数组尾部添加元素 入栈
array_slice从数组中取出一段
array_sum
计算数组中所有值
array_unique移出数组中重复的值
array_merge多个数组融合成一个数组 关联键值相同后面覆盖前面
in_array
判断元素值是否在数组中
implode将数组用指定分隔符合并成字符串
explode用指定分隔符将字符串分割成数组
shuffle打乱数组 给数组洗牌
extract将数组转换成标量变量 适用于关联数组
print_r打印变量信息
var_dump打印变量信息
count计算数组元素个数
assort对数组排序保持索引关系
arsort对数组逆向排序并保持索引关系
ksort按键名正序排序
krsort按键名逆序排序
sort按键值正序排序
rsort按键值逆序排序

遍历数组 读取数组并获取元素值

对于索引数组的遍历,我们可以采用之前讲到的循环结构来实现,计算总长度,然后循环体里获取每一个下标的数组元素值。样例如下

<?php
#定义数组 $arr = array(0,1,2,3,4,5,6); #用循环遍历数组 $count = count($arr);#计算数组长度 #用for循环实现 for($i=0;$i<$count;$i++) {     echo "{$i}:{$arr[$i]} "; }
?>

对于关联数组没法用下标遍历方式获取,我们可以用each函数实现,该函数返回数组元素内部指针指向的键和值,并将指针下移,内部指针超越数组末端则返回false

<?php
#定义索引数组 $arr = array('name'=>'nango','title'=>'handsome','age'=>18); $count = count($arr); for($i=0;$i<$count;$i++){     $element = each($arr);     echo "key:".$element['key'].'value:'.$element['value']; }
?>

foreach 语句遍历 

使用foreach遍历是针对数组的一种for遍历简化,内部有指针维护,可以对索引数组和关联数组进行遍历,一招鲜吃遍天,有它就够了

<?php
#定义混合数组 $arr = array(0,2,3,5.'extra'=>'hello','name'=>'esays'); foreach($arr as $key=>$value) {     echo "key:".$key.'value:'.$element['value']; }
?>

        通过对比可以发现foreach结构比上述两种方式都要简洁直观。

    系统全局数组

PHP有预定义常量,自然也很容易联想到有没有预定义变量的东西存在?

数组作为变量的一种,预定义的数组变量我们称着为全局数组,哪怕在函数内部调用也不用global关键字声明,全局数组分为如下几大类,主要存储相应的系统信息。

全局数组作用
$_SERVER存储当前服务器信息,客户端请求地址等
$_GET通过url参数提交的key->value变量都会存在该数组变量中
$_POST通过表单提交的key->value变量存在该数组变量中
$_FILES通过HTTP POST提交的上传文件项目信息存在该数组
$_COOKIEHTTP cookie信息数组
$_SESSION服务器会话数组
$GLOBALS包含一个全局变量的引用,键值名为全局变量名称

通过掌握关联数组和索引数组的定义使用以及常见数组函数的调用,我们可以轻松操作数组。

搜索

关于楠Go

2015年毕业于吉林大学珠海学院,现今工作已两年有余,2014年在珠海一家游戏公司从事手机游戏开发,后离职转型为网络端PHP工程师,时至今日。熟练掌握PHP面向对象编程网络编程TP框架使用Discuz论坛插件开发。掌握前端框架Bootstrap的使用,掌握JS框架Jquery的使用。已开发多款网站,有着一定基础的开发经验,希望能在互联网领域再上一层楼!

了解更多: 开源中国 ThinkPHP


Powered by MetInfo 5.3.19 ©2008-2018 www.MetInfo.cn