数组的概述
- 数组:数组就是一组数据的集合,是由 键(key) => 值(value) 对组成的有序映射,每个键值对用 “,” 隔开。
- 键:在数组中 [ ] 内用于区分不同值表示的就是键。
- 值:在数组中键对应的数据就是值。
- 键值对: 键(key) => 值(value)就是键值对。
- 下标:索引数组的键。
- 元素:元素就是键值对。
- 索引数组:当数组的下标是数字的时候,称之为索引数组。
- 关联数组:当数组的下标是字符串的时候,称之为关联数组。
- 混合数组:当数组的下标既有数字,也有字符串,称之为混合数组。
数组的定义
1.使用语言结构声明数组
- 格式一:
- array(val1, val2…) 。
- 不指定下标,下标是从0自动增长的连续数值。
- 格式二:
- array(key1=>val1, key2=>val2…)。
- 指定下标,下标是用户指定的值,可以声明关联数组,索引数组,混合数组。
$mother= array('wendy', '女' , 30 ,'黄色');
$father=array('name'=>'鹏','age'=>30,'sex'=>'男',);
$brother=array('name'=>'zz','age'=>9,'sex'=>'boy',9 =>'幸运数字:7');
$baby=array(1 => 'cc', 2 => 4, 3 => 'boy', 9 => 'red');
echo "<pre>";
var_dump($mother);
echo '<hr>';
var_dump($father);
echo '<hr>';
var_dump($brother);
echo '<hr>';
var_dump($baby);
echo '<hr>';
2. 使用指定语法声明数组
- 格式一:
[val1, val2...] - 不指定下标,下标是从0自动增长的连续数值。
- 格式二:
[key1=>val1, key2=>val2...] - 指定下标,下标是用户指定的值,可以声明关联数组,索引数组,混合数组。
$mother=['wendy', '女' , 30 ,'黄色'];
$father=['name'=>'鹏','age'=>30,'sex'=>'男',];
$brother=['name'=>'zz','age'=>9,'sex'=>'boy',9 =>'幸运数字:7'];
$baby=[1 => 'cc', 2 => 4, 3 => 'boy', 9 =>'red'];
3. 通过添加数组元素的方式声明数组
- 格式一:
变量[key] = val - 使用添加数组元素的方式声明数组,可以声明关联数组,索引数组,混合数组。
- 格式二:
变量[] = val - 只能声明索引从0开始的连续下标的索引数组。
$mother[] = 'wendy';
$mother[] = '女';
$mother[] = 30;
$mother[] = '黄色';
$father['name']= '鹏';
$father['age']= 30;
$father['sex']= '男';
$brother['name'] = 'zz';
$brother['age'] = 9;
$brother['sex'] = 'boy';
$brother[9] = '幸运数字:7';
$baby[1] = 'zz';
$baby[2] = 4;
$baby[3] = 'boy';
$baby[9] = 'red';
创建数组时的注意的细节:
- 不指定下标的数组,下标是从0自动增长的连续数值。
- 指定下标数组,下标为用户指定的值,可以生命关联数组,索引数组或者混合数组。
- 键(key)可是是一个整数 integer 或字符串 string。
- 数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。
- 值(value)可以是任意类型的值。
- 索引数组默认下标是数字,从0开始,如果在这个增长的路上自己加了一个键名(下标)。
- 如果是字符串,当前元素就是字符串下标,数字跳过。
- 如果后面的下标和前面一样了,后面下标的值会覆盖前面的值。
- 如果定义一个没有下标的值,下标会从当前最大的下标值开始递增。
key 会有如下的强制转换:
- 包含有合法整型值的字符串会被转换为整型。例如键名 “8” 实际会被储存为 8。但是 “08” 则不会强制转换,因为其不是一个合法的十进制数值。
- 浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 会被储存为 8。
- 布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
- Null 会被转换为空字符串,即键名 null 实际会被储存为 “”。
数组的相关操作
查看数组元素
- 打印数组所有的元素
- 查看方式:
var_dump($baby) / print_r($brother); 。 - 区别:
- var_dump 和 print_r 都是用于查看数组内容的方法。
- var_dump 可以输出数组的内容和类型。
- 而 print_r 只能输出数组的内容。
- 打印单个元素:
echo $brother['sex']; / echo $brother[9]; 。
添加数组元素
- 方法一:不指定下标添加元素
- 数组变量[] = 值
- 注意:该方法添加的一定能是索引数组元素。添加时下标是当前数组的最大索引下标值+1;
- 方法二:指定下标添加
- 数组变量[下标]
- 该方法可以添加关联数组、索引数组以及混合数组。
修改数组的元素
格式:数组变量[下标] = newVal;
删除数组元素
- 格式: unset(数组变量[下标] )
- 数组变量[下标] 就当变量使用,数组元素就是变量。
- 使用unset删除数组的元素后,再添加新的元素,索引依然是原来的索引+1。
删除和清空数组
- 删除数组的所有元素值和类型。unset(数组变量)。
- 清空数组:仅删除数组的元素,不删除类型。数组变量 = array() 。
一维数组:如果数组中所有的元素十五值都是除了数组类型之外的,那么就是一个一维数组。 二维数组:一个一维数组的元素具有另外一个一维数组的时候,该数组就是一个二维数组。 多维数组:在二维数组的基础上,如果其中的值还是数组类型的话,那么这个数组就是一个多维数组。
获取多维数组的值:多维数组和一维数组一样,依次通过下标得到对应的值。
数组的遍历
- 数组的遍历:就是一个一个来看数组的元素。
- count() : 统计数组的长度(数组元素的个数)。
- 参数:需要统计数组长度的数组变量。
- 返回值:返回该数组的元素个数。
- for循环遍历数组–只能遍历索引数组且下标必须连续递增的。
- foreach循环遍历数组:foreach可以遍历任何类型数组。
EG:循环遍历数组到表格
<?php
//数据
$shuihu = [
['id' => 0, 'name' => '宋江', 'nickname' => '及时雨','age'=>380,'sex'=>'1'],
['id' => 1, 'name' => '卢俊义', 'nickname' => '玉麒麟','age'=>372,'sex'=>'1'],
['id' => 3, 'name' => '吴用', 'nickname' => '智多星','age'=>334,'sex'=>'1'],
['id' => 4, 'name' => '孙二娘', 'nickname' => '母夜叉','age'=>134,'sex'=>'0'],
['id' => 5, 'name' => '关胜', 'nickname' => '大刀','age'=>310,'sex'=>'1'],
['id' => 6, 'name' => '林冲', 'nickname' => '豹子头','age'=>311,'sex'=>'1'],
['id' => 7, 'name' => '秦明', 'nickname' => '霹雳火','age'=>350,'sex'=>'1'],
['id' => 8, 'name' => '呼延灼', 'nickname' => '双鞭','age'=>234,'sex'=>'1'],
['id' => 9, 'name' => '扈三娘', 'nickname' => '一丈青','age'=>218,'sex'=>'0'],
['id' => 10, 'name' => '阮小二', 'nickname' => '立地太岁','age'=>236,'sex'=>'1'],
['id' => 11, 'name' => '公孙胜', 'nickname' => '入云龙','age'=>410,'sex'=>'1'],
['id' => 12, 'name' => '顾大嫂', 'nickname' => '母大虫','age'=>288,'sex'=>'0']
];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<table width=800 border="1" align="center">
<tr>
<th>ID</th>
<th>姓名</th>
<th>绰号</th>
<th>年龄</th>
<th>性别</th>
</tr>
<?php
$sex=['女','男','保密'];
foreach($shuihu as $key =>$val):
?>
<tr <?php/*各行变色*/ if($key%2==0){ echo "bgcolor='#c2d8d1'"; };?>>
<td><?php echo $val['id'] ;?></td>
<td><?php echo $val['name'] ;?></td>
<td><?php echo $val['nickname'] ;?></td>
<td><?php echo $val['age'] ;?></td>
<td><?php echo $sex[$val['sex']] ;?></td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
|