当前位置: 首页 > news >正文

php 数组基础/练习

数组

练习在最后

数组概述

概述与定义

  • 数组中存储键值对

    数组实际上是一个有序映射 key-value,可将其当成真正的数组、列表(向量)、散列表、字典、集合、栈、队列等

  • 数组中的元素可以是任意类型的数据对象(可以嵌套数组)

  • 输出数组时不能使用 echo 语句,可以使用 print_r() 函数代替

  • <?php?>标签前加<pre>标签可格式化输出

  • 解决中文乱码问题,在页面 头部加标签<meta charset = "utf-8">

  • 定义数组(array)

    $stu[]
    
    <?php$name = "zhangsan";$age = 18;$score = 59.9;$sex = true;$stu[] = $name;$stu[] = $age;$stu[] = $score;$stu[] = $sex;print_r($stu);print_r("<br />");print_r($stu[1]);print_r("<br />");var_dump($stu);?>
    

    image-20231023090801622

数组特点

  • 键值对(key-value)
  • 键,key,存储在数组中,变量的编号(0 开始)
  • 值,value,存储在 数组中,变量的值
  • 数组中的元素可以是任意类型的数据对象
  • 复合数据类型,非线性(一个数组对应多个值)

数组分类

  • 索引数组

    变量的"编号"是整数,整数不具备一定的语义

  • 关联数组

    变量的"编号"用字符串表示,可以具备一定的语义

  • 不指定键名时默认为索引数组

    <?php$name = "zhangsan";$age = 18;$score = 59.9;$sex = true;$stu['name'] = $name;$stu['age'] = $age;$stu['score'] = $score;$stu['sex'] = $sex;print_r($stu);print_r("<br />");print_r($stu['score']);print_r("<br />");var_dump($stu);?>
    

    image-20231023090809718

数组的创建

直接赋值

  • 语法

    $变量名称[]=数据;
    // 创建索引数组
    $变量名称[key]=数据;
    // 创建关联数组
    
  • 创建第二个学生信息

    <?php$stu2['name']="lisi";$stu2['sex']=false;$stu2['age']=22;$stu2['score']=99.9;echo "<pre>";// <pre>保持文本格式的预格式化文本标签var_dump($stu2);?>
    

    image-20231023090817735

array 结构

  • 语法

    $变量 = array(变量1,变量2,...);
    //或
    $变量 = array('key1' => value1,'key2' => value2,...
    )
    
  • 创建第三个学生信息

    <?php$stu3 = array("wangwu",true,25,0);echo "<pre>";var_dump($stu3);?>
    

    image-20231023090828559

  • 创建第四个学生信息

    <?php$stu4 = array('name' => "july",'sex' => true,'age' => 23,'score' => 46
    );echo "<pre>";print_r($stu4);?>
    

    image-20231023090834914

输出

  • print_r()echo 类似

    当输出为 bool 类型的 true 时,输出 1

    当输出为 bool 类型的 false 时,不输出

    <?php$test[] = false;$test[] = true;print_r($test);print_r('<br />');var_dump($test);?>
    

    image-20231023090841030

多维数组

  • 数组中的元素可以是任何类型的数据,当数组中的元素为数组时为多维数组

多维数组创建–一个班四个学生为例

  • 一个班四个学生的信息

  • 定义完学生数组再定义班级数组,先定义数组内元素的数组

    <?php$stu1 = array('name' => "zhangsan",'sex' => true,'age' => 23,'score' => 46
    );$stu2 = array('name' => "lisi",'sex' => false,'age' => 22,'score' => 89
    );$stu3 = array('name' => "wangwu",'sex' => true,'age' => 26,'score' => 59.9
    );$stu4 = array('name' => "jucy",'sex' => false,'age' => 19,'score' => 98
    );$class = array($stu1,$stu2,$stu3,$stu4);echo "<pre>";print_r($class);?>
    

    image-20231023090849017

数组元素的操作

数组元素的访问

  • 通过 key 找到数组中的 value

    <?php$stu1 = array('name' => "zhangsan",'sex' => true,'age' => 23,'score' => 46
    );echo "<pre>";echo "zhangsan's score is {$stu1['score']}";// 引号中的变量要用 {} 括起来
    ?>
    

    image-20231023090855463

  • 多维数组的访问

    <?php$stu1 = array('name' => "zhangsan",'sex' => true,'age' => 23,'score' => 46
    );$stu2 = array('name' => "lisi",'sex' => false,'age' => 22,'score' => 89
    );$stu3 = array('name' => "wangwu",'sex' => true,'age' => 26,'score' => 59.9
    );$stu4 = array('name' => "jucy",'sex' => false,'age' => 19,'score' => 98
    );$class = array($stu1,$stu2,$stu3,$stu4);echo "<pre>";echo "zhangsan's score is {$class[0]['score']}";?>
    

    image-20231023090903524

元素操作

  • 读取:通过 key 捕获数组中的 value

  • 修改、增加,直接赋值

  • 删除:PHP中删除数组元素意义不大,可置之不理

    <?php$stu1 = array('name' => "zhangsan",'sex' => true,'age' => 23,'score' => 46
    );$stu1['score'] = 60;// 将原成绩 46 修改为 60echo "<pre>";print_r($stu1);?>
    

    image-20231023090909008

数组的遍历(循环)

  • 数组中的每个元素都访问一次

for 循环

  • 缺点:使用 for 循环遍历数组依赖 key 元素的自然数规律(索引数组)

  • 索引数组遍历

    <?php$stu = array("wangwu",true,25,0);echo "<pre>";for($i = 0 ; $i < count($stu) ; $i++){// count($stu) 计算数组长度echo $stu[$i]."<br />";}?>
    

    image-20231023090915866

foreach 语句

  • foreach 语法结构 提供了数组遍历的简单方式

  • foreach 这种语言结构是专门来遍历数组的,foreach 是一种循环,不需要额外计时器(数组中有多少个元素,循环就执行多少次)

  • 基本结构

    遍历值

    foreach($arr as $key){echo $key;
    }
    
    foreach($arr as $key => $value){// 代码块
    }
    
    <?php$stu = array('name' => "lisi",'sex' => false,'age' => 22,'score' => 89
    );foreach($stu as $key => $value){echo $value."<br />";}?>
    

  • 访问键值对

    <?php$stu = array('name' => "lisi",'sex' => false,'age' => 22,'score' => 89
    );foreach($stu as $key => $value){echo $key."=>".$value."<br />";}?>
    

    image-20231023090931036

  • 多维数组遍历

    <?php$stu1 = array('name' => "zhangsan",'sex' => true,'age' => 23,'score' => 46
    );$stu2 = array('name' => "lisi",'sex' => false,'age' => 22,'score' => 89
    );$stu3 = array('name' => "wangwu",'sex' => true,'age' => 26,'score' => 59.9
    );$stu4 = array('name' => "jucy",'sex' => false,'age' => 19,'score' => 98
    );$class = array($stu1,$stu2,$stu3,$stu4);echo "<pre>";foreach($class as $k => $v){foreach($v as $key => $value){// 取 $class 数组的 value(内部数组名)echo $value."<br />";}echo '<br />';}?>
    

    image-20231023090940059

  • 注意

    • foreach 是用来遍历数组的循环语言结构,数组中有多少个元素,该语言结构就会循环执行几次

    • foreach 语言结构中,临时变量的名字可以变化,但是语言结构不能改变

      foreach($class as $k => $v){}
      // 上述代码中 $k 和 $v 中 $后的变量名 可以任意命名
      // 但 => 不可改变
      // $class 为要遍历的目标数组
      

练习

将班级内的成员属性以表格形式输出

<meta charset='utf-8'>
<pre>
<?php$stu1 = array("name"=> "zhangsan","sex"=> "1","age"=> "18","score"=> "99.99") ;$stu2 = array("name"=> "lisi","sex"=> "0","age"=> "19","score"=> "59.99") ;$stu3 = array("name"=> "wangwu","sex"=> "1","age"=> "18","score"=> "60") ;$stu4 = array("name"=> "zhaoliu","sex"=> "1","age"=> "23","score"=> "65") ;$class = array($stu1,$stu2,$stu3,$stu4) ;echo "<table border=1>";echo"<tr ><td colspan = '4' align='center'>学生信息</td></tr>";echo "<tr><td>姓名</td><td>性别</td><td>年龄</td><td>成绩</td></tr>";foreach($class as $k => $v) {// $class 的 $value 值为 class 内的多个 stu数组echo "<tr>";// 循环到每个 student 时建立一行表格foreach($v as $key => $value) {echo "<td>";// 循环到每个 stu 的每个属性时建立一个单元格echo $value;echo "</td>";}echo "</tr>";
}
echo "</table>";
?>

效果

image-20231023104714393

相关文章:

php 数组基础/练习

数组 练习在最后 数组概述 概述与定义 数组中存储键值对 数组实际上是一个有序映射 key-value&#xff0c;可将其当成真正的数组、列表&#xff08;向量&#xff09;、散列表、字典、集合、栈、队列等 数组中的元素可以是任意类型的数据对象&#xff08;可以嵌套数组&#…...

Redbook Chapter 7: Query Optimization翻译批注

首先说明一下redbook上的几篇文章是做什么的。这几篇文章是通过几位作者对不同方面的论文进行阅读和筛选后&#xff0c;挑出其中具备代表性或者权威的论文来做分析&#xff0c;为读者提供阅读指导和建议&#xff0c;同时&#xff0c;也是对某个方面的论文进行高度的总结&#x…...

【分布式】大模型分布式训练入门与实践 - 04

大模型分布式训练 数据并行-Distributed Data Parallel1.1 背景1.2 PyTorch DDP1&#xff09; DDP训练流程2&#xff09;DistributedSampler3&#xff09;DataLoader: Parallelizing data loading4&#xff09;Data-parallel&#xff08;DP&#xff09;5&#xff09;DDP原理解析…...

欧拉图相关的生成与计数问题探究

最近学了一波国家集训队2018论文的最后一个专题。顺便带上了一些我的注解。 先放一波这个论文 1.基本概念 欧拉图问题是图论中的一类特殊的问题。在本文的介绍过程中&#xff0c;我们将会使用一些图 论术语。为了使本文叙述准确&#xff0c;本节将给出一些术语的定义。 定义…...

CSS3属性详解(一)文本 盒模型中的 box-ssize 属性 处理兼容性问题:私有前缀 边框 背景属性 渐变 前端开发入门笔记(七)

CSS3是用于为HTML文档添加样式和布局的最新版本的层叠样式表&#xff08;Cascading Style Sheets&#xff09;。下面是一些常用的CSS3属性及其详细解释&#xff1a; border-radius&#xff1a;设置元素的边框圆角的半径。可以使用四个值设置四个不同的圆角半径&#xff0c;也可…...

小程序:如何合理规划分包使主包不超过2M

背景 做过小程序项目的同学应该都有这样的经历&#xff0c;项目做着做着&#xff0c;突然发现代码包的大小超过了 2M&#xff0c;小程序无法提审&#xff0c;然后痛苦的删文件改代码来减少包大小。 虽然我们也知道小程序给我们提供了分包的功能可以减少主包的大小&#xff0c…...

迭代器的封装与反向迭代器

一、反向迭代器 在list模拟实现的过程中&#xff0c;第一次接触了迭代器的封装&#xff0c;将list的指针封装成了一个新的类型&#xff0c;并且以迭代器的基本功能对其进行了运算符重载 反向迭代器是对正向迭代器的封装&#xff0c;并且体现了泛型编程的思想&#xff0c;任意…...

PHP项目学习笔记-萤火商城https://www.yiovo.com/doc

萤火商城学习笔记 注意事项关于建表增加页面流程前台页面的数据列表数据下拉列表的数据 关于时间的处理前台界面数据处理 多年没有碰过php代码了&#xff0c;这个项目不错&#xff0c;想好好学习下&#xff0c;持续更新 注意事项 打开APP_DEBUG有些时候改了前台页面后&#x…...

我国有多少个港口?

港口是什么&#xff1f; 港口是海洋运输中不可或缺的重要设施之一&#xff0c;是连接陆路和水路运输的重要节点。港口通常是指位于沿海地区的水陆交通枢纽&#xff0c;是船舶停靠、装卸货物、储存物资和维修船只的场所。港口一般由码头、泊位、仓库、货场、客运站等设施组成&a…...

uniapp实现登录组件之外区域置灰并引导登录

实现需求 每个页面需要根据用户是否登录决定是否显示登陆组件,登录组件半屏底部显示,登录组件之外区域置灰,功能按钮点击之后引导提示登录.页面效果如下: 实现思路说明 设置登录组件背景颜色为灰色,将页面分成登录区域(底部)和非登陆区域(上面灰色显示部分), 置灰区域添加…...

抄表系统是如何抄到电表水表的数据的?

抄表系统是一种利用无线通信技术&#xff0c;实现远程读取电表水表数据的系统。抄表系统主要由三部分组成&#xff1a;电表水表、集中器和后台管理平台。接下来&#xff0c;小编来为大家详细的介绍下抄表系统是如何抄到电表水表的数据的&#xff0c;一起来看下吧! 电表水表是抄…...

Qt之自定义事件QEvent

在Qt中,自定义事件的步骤大概如下: 1.创建自定义事件,自定义事件需要继承QEvent 2.使用QEvent::registerEventType()注册自定义事件类型,事件的类型需要在 QEvent::User 和 QEvent::MaxUser 范围之间,在QEvent::User之前是预留给系统的事件 3.使用sendEvent() 和 postEv…...

项目管理week5——交个作业

...

5.5G移动通信技术

5.5G即5G-Advanced&#xff0c;是一种移动通信技术。 5.5G 是 5G 和 6G 之间的过渡阶段&#xff0c;将在速率、时延、连接规模和能耗方面全面超越现有 5G&#xff0c;有望实现下行万兆和上行千兆的峰值速率、毫秒级时延和低成本千亿物联。按照国际标准组织 3GPP 定义&#xff…...

chrony时间服务

目录 1.1.重要性 1.2. Linux的两个时钟 1.3. NTP 1.4. Chrony介绍 2.安装与配置 2.1.安装: 2.2. Chrony配置文件分析 3.实验 3.1实验1 3.2实验2 3.常见时区 1.1.重要性 ●由于IT系统中&#xff0c;准确的计时非常重要&#xff0c;有很多种原因需要准确计时: 。在网络…...

音乐制作软件 Studio One 6 mac中文版软件特点

Studio One mac是一款专业的音乐制作软件&#xff0c;该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…...

SpringBoot整合redis集群和redis单节点

// 连接redis单节点配置类Configuration public class RedisConfig {Value("${spring.redis.host}")private String host;Value("${spring.redis.port}")private Integer port;Value("${spring.redis.password}")private String password;/*** d…...

【ARM Coresight 系列文章19.1 -- Cortex-A720 PMU 详细介绍】

文章目录 概述Cortex-A720 PMU Features1.1 PMU 使用介绍1.2 Performance monitors events1.3 Performance Monitors Extension registers1.3.1 Performance monitors program1.4 Performance monitors interrupts1.5 Interaction with the Performance Monitoring Unit and De…...

FoneDog iOS Unlocker(ios解锁工具) 适用macos电脑

FoneDog iOS Unlocker是一款专业的iOS设备解锁工具&#xff0c;旨在帮助用户解决iOS设备上的解锁问题。该软件支持解锁各种锁定类型&#xff0c;如数字密码锁、手势密码锁、Touch ID和Face ID等&#xff0c;可以解除iPhone、iPad和iPod Touch等设备的锁定状态。FoneDog iOS Unl…...

雅可比矩阵和雅可比坐标

雅可比行列式的简要介绍 一、说明 在本教程中&#xff0c;您将回顾一下雅可比行列式的简单介绍。完成本教程后&#xff0c;您将了解&#xff1a; 雅可比矩阵收集了可用于反向传播的多元函数的所有一阶偏导数。雅可比行列式在变量之间变化时非常有用&#xff0c;它充当一个坐标空…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...