第五章 数组
PHP中,数组是由一个或者多个数组元素组成的,每个数组由键(Key)和值(Value)构成
数组的分类
索引数组
索引数组是指键名为整数的数组。默认情况下,索引数组的键名是从0开始的,并一次递增,主要适用于利用位置(0,1,2,3…)来标识数组元素的情况,索引数组的键名也可以自己指定
关联数组
关联数组是指键名为字符串的数组,通常情况下,关联数组元素的“键”和“值”有一定的业务逻辑关系。
数组的使用
定义数组
(1)定义索引数组
<?php
$students=array(
array(1,'mary',60.5),
array(2,'John',80.5),
array(3,'Tom',79.3)
);
var_dump($students);
这是一个二维数组,在省略键名的设置时,默认从0开始,依次增加1,因此该数组的键名一次为“0,1,2”。除此之外,还可以根据实际需要定义数组元素
(2)定义关联数组
<?php
$info=array('id'=>10,'name'=>'Tom','tel'=>1908908980890);
var_dump($info);
(3)定义混合数组
$temp=array();
$mixed=array(2,'str','id'=>5,5=>'b','a');
var_dump($mixed);
var_dump($temp);
上述示例定义了一个空数组 t e m p 和 混 合 数 组 temp和混合数组 temp和混合数组mixed。其中,$mixed数组元素“b"制定了数字键名为“5”,则其后的“a"元素会自动将前面最大的数字键名加1后作为键名,5+1得到6
数组赋值
<?php
$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'
var_dump($arr);
访问数组
通过”数组名[健]"的方式来访问
<?php
$data=array('goods'=>'clothes','num'=>23,'sales'=>500,5=>'hh');
echo $data['goods'];
echo $data['num'];
echo $data[5];
遍历数组
用foreach完成遍历
<?php
$info=['id'=>1,'usr'=>'Miranda','age'=>18];
foreach($info as $k=>$v)
{
echo $k,':',$v,'<br>';
}
foreach引用赋值
<?php
$info=[1,2,3];
foreach($info as $k=>&$v)
{
$v=$v+2;
}
print_r($info);
遍历二维数组
<?php
$arr=array(
array(1,2,3,4),
array(1,2,3,4),
array(1,2,3,4),
array(1,2,3,4),
);
foreach ($arr as $value)
{
foreach ($value as $item) {
echo $item;
}
}
数组的删除
<?php
$info=[1,2,3];
foreach($info as $k=>&$v)
{
$v=$v+2;
}
print_r($info);
unset($info[1]);
print_r($info);
数组操作符
数组查找
数组排序
数组常用函数
指针操作数组
函数名称 | 功能描述 |
---|---|
current() | 获取数组中当前指针指向的元素的值 |
key() | 获取数组中当前指针 |
next() | 将数组中的内部指针向前移动一位 |
prev() | 将数组中的内部指针倒回一位 |
each() | 获取数组中当前的键值对并将数组指针向前移动一步 |
end() | 将数组的内部指针指向最后一个元素 |
reset() | 将数组的内部指针指向第一个元素 |
(1)通过指针函数访问数组
<?php
$arr=['a','b','c','d'];
var_dump($arr);
echo '<br>获取数组中当前指针,获取数组中当前指针指向的元素的值';
echo key($arr).'-'.current($arr);
echo '<br>将数组中的内部指针向前移动一位';
echo next($arr);
echo '<br>将数组的内部指针指向最后一个元素';
echo end($arr);
echo '<br>将数组中的内部指针倒回一位';
echo prev($arr);
echo '<br>将数组的内部指针指向第一个元素';
echo reset($arr);
数组元素操作函数
(1)array_count_values()
<?php
$a=array("A","Cat","Dog","A","Dog");
print_r(array_count_values($a));
?>
预定义超全局数组变量
已经定义好了(存在)的变量(存放的数据类型是数组)
超全局:超级全局变量,作用域(有效区域)
<?php
var_dump($_POST);
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form method="post">
<input type="text" name="tom">
<button type="submit"></button>
</form>
</body>
</html>