PHP -php中的数组

数组的概述

  • 数组:数组就是一组数据的集合,是由 键(key) => 值(value) 对组成的有序映射,每个键值对用 “,” 隔开。
  • :在数组中 [ ] 内用于区分不同值表示的就是键。
  • :在数组中键对应的数据就是值。
  • 键值对: 键(key) => 值(value)就是键值对。
  • 下标:索引数组的键。
  • 元素:元素就是键值对。
  • 索引数组:当数组的下标是数字的时候,称之为索引数组。
  • 关联数组:当数组的下标是字符串的时候,称之为关联数组。
  • 混合数组:当数组的下标既有数字,也有字符串,称之为混合数组。

数组的定义

1.使用语言结构声明数组

  • 格式一:
    • array(val1, val2…) 。
    • 不指定下标,下标是从0自动增长的连续数值。
  • 格式二:
  • array(key1=>val1, key2=>val2…)。
  • 指定下标,下标是用户指定的值,可以声明关联数组,索引数组,混合数组。
//1.语言结构声明数组
$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...]
    • 指定下标,下标是用户指定的值,可以声明关联数组,索引数组,混合数组。
//2.使用指定语法声明数组
$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. 通过添加数组元素的方式声明数组

  1. 格式一:
    1. 变量[key] = val
    2. 使用添加数组元素的方式声明数组,可以声明关联数组,索引数组,混合数组。
  2. 格式二:
    1. 变量[] = val
    2. 只能声明索引从0开始的连续下标的索引数组。
	//3. 添加元素方式声明数组
	$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 会有如下的强制转换

  1. 包含有合法整型值的字符串会被转换为整型。例如键名 “8” 实际会被储存为 8。但是 “08” 则不会强制转换,因为其不是一个合法的十进制数值。
  2. 浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 会被储存为 8。
  3. 布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
  4. Null 会被转换为空字符串,即键名 null 实际会被储存为 “”。

在这里插入图片描述

数组的相关操作

查看数组元素

  1. 打印数组所有的元素
    • 查看方式:var_dump($baby) / print_r($brother);
    • 区别:
      • var_dump 和 print_r 都是用于查看数组内容的方法。
      • var_dump 可以输出数组的内容和类型。
      • 而 print_r 只能输出数组的内容。
  2. 打印单个元素:echo $brother['sex']; / echo $brother[9];在这里插入图片描述

添加数组元素

  • 方法一:不指定下标添加元素
    • 数组变量[] = 值
    • 注意:该方法添加的一定能是索引数组元素。添加时下标是当前数组的最大索引下标值+1;
  • 方法二:指定下标添加
    • 数组变量[下标]
    • 该方法可以添加关联数组、索引数组以及混合数组。

修改数组的元素

格式:数组变量[下标] = newVal;

删除数组元素

  • 格式: unset(数组变量[下标] )
  • 数组变量[下标] 就当变量使用,数组元素就是变量。
  • 使用unset删除数组的元素后,再添加新的元素,索引依然是原来的索引+1。

删除和清空数组

  • 删除数组的所有元素值和类型。unset(数组变量)。
  • 清空数组:仅删除数组的元素,不删除类型。数组变量 = array() 。

一维数组:如果数组中所有的元素十五值都是除了数组类型之外的,那么就是一个一维数组。
二维数组:一个一维数组的元素具有另外一个一维数组的时候,该数组就是一个二维数组。
多维数组:在二维数组的基础上,如果其中的值还是数组类型的话,那么这个数组就是一个多维数组。

获取多维数组的值:多维数组和一维数组一样,依次通过下标得到对应的值。
在这里插入图片描述

数组的遍历

  • 数组的遍历:就是一个一个来看数组的元素。
  • count() : 统计数组的长度(数组元素的个数)。
    • 参数:需要统计数组长度的数组变量。
    • 返回值:返回该数组的元素个数。
  1. for循环遍历数组–只能遍历索引数组且下标必须连续递增的。
  2. foreach循环遍历数组:foreach可以遍历任何类型数组。
    • 语法:
      //格式1:
      foreach(数组变量名 as 键名=> 键值){
      	键名就是循环到的一个键值对的下标。
      	键值就是循环到的一个键值对的值。			
      }
      //格式2:遍历数组,只获取值
      foreach(数组变量名 as  键值){
      	循环体		
      }
      

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>

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值