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 修改为 60
    	echo "<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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/103419.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频号视频提取工具,操作简单!一键搞定

在当下信息爆炸的时代&#xff0c;视频成为了人们获取信息、娱乐和交流的重要方式。而随着视频创作的普及&#xff0c;越来越多的人希望能够从各类视频中提取出有价值的素材和片段&#xff0c;以便用于自己的创作需求。然而&#xff0c;对于大多数人来说&#xff0c;费时费力地…

模拟线程死锁现象:两个线程同时抢两个互斥锁

下面业务逻辑的分析 1.如果 flag 为 T&#xff0c;线程 A 就会先得到 / 持有 o1 对象锁&#xff0c;然后尝试去获取 o2 对象锁 2.如果线程 A 得不到 o2 对象锁&#xff0c;就会 Blocked 3.如果 flag 为 F &#xff0c;线程 B 就会先得到 / 持有 o2 对象锁&#xff0c;然后尝试去…

Mac M1下使用Colima替代docker desktop搭建云原生环境

文章目录 为什么不使用docker desktop1.docker desktop卸载2.docker、docker compose安装3.colima安装3.1获取镜像地址3.2将下载好的iso文件放到colima指定路径3.3重新执行colima start 4.minikukekubernetes安装5.关闭minikube Mac M1下使用Colima替代docker desktop搭建云原生…

SOFAStack软件供应链安全产品解析——SCA软件成分分析

近年来&#xff0c;软件供应链安全相关攻击事件呈快速增长态势&#xff0c;造成的危害也越来越严重&#xff0c;为了保障软件供应链安全&#xff0c;各行业主管单位也出台了诸多政策及技术标准。基于内部多年的实践&#xff0c;蚂蚁数科金融级云原生PaaS平台SOFAStack发布完整的…

保护云数据安全的关键环节是什么?

云数据安全是维护数据隐私和保护关键信息的关键一环。在云中存储和处理数据提供了巨大的便利性和效率&#xff0c;但同时也伴随着风险。本文将介绍保护云数据的关键环节是什么! 1、数据加密&#xff1a;在传输和存储数据时使用强加密是保护数据的基本步骤。确保数据在云中存储时…

Iterator迭代器

一、基本概念 Iterator迭代器是一种接口&#xff0c;为不同的数据结构提供一种访问机制&#xff0c;即for … of 循环。当使用for…of循环遍历某种数据结构时&#xff0c;该循环会自动去寻找 Iterator 接口。任何数据结构只要部署Iterator接口&#xff0c;就可以完成遍历操作(…

SpringBoot中对Spring AOP的实现

文章目录 SpringBoot中对Spring AOP的实现AOP简介引入依赖AOP体系与概念编写AOP切面类启动SpringBoot项目然后访问controller控制器对环绕通知放行execution表达式的含义通过注解方式定义切点 SpringBoot中对Spring AOP的实现 AOP简介 AOP (Aspect Oriented Programming), 面…

智能视频监控平台EasyCVR接口调用注意事项汇总!

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…

前端,CSS,背景颜色跟随轮播图片改变而改变(附源码)

首先看效果&#xff01; 比如轮播图时红色&#xff0c;那么背景的底色也是红色&#xff0c;轮播图时黄色&#xff0c;背景的底色也是黄色&#xff0c;这就是根据轮播图的图片切换&#xff0c;而改变背景颜色随轮播图颜色一致 话不多说&#xff0c;直接上代码&#xff01;非常简…

Python使用psycopg2读取PostgreSQL的geometry字段出现二进制乱码

1、问题 读取geometry字段出现二进制乱码 查询语句&#xff1a; sql "select * from public"Note: 这种写法在PostgreSQL中直接查询, 没有问题&#xff0c;不会报错。 但是在Python中查询&#xff0c;如果导出的geom还是一长串的geometry 格式的话&#xff0c; …

【计网 EMail】计算机网络 EMail协议详解:中科大郑烇老师笔记 (五)

目录 0 引言1 电子邮件EMail1.1 组成1.2 SMTP协议1.3 案例&#xff1a;Alice给Bob发送报文1.4 SMTP总结1.5 邮件报文格式1.6 POP3协议和IMAP协议 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;计算机四大基础专栏&#x1f4dc; 其他章节&#xf…

计算机网络(谢希仁)第八版课后题答案(第一章)

1.计算机网络可以向用户提供哪些服务 连通性:计算机网络使上网用户之间可以交换信息&#xff0c;好像这些用户的计算机都可以彼此直接连通一样。 共享:指资源共享。可以是信息、软件&#xff0c;也可以是硬件共享。 2.试简述分组交换的要点 采用了存储转发技术。把报文(要发…

每日一练 | 华为认证真题练习Day122

1、路由器所有的接口属于同一个广播域。 A. 对 B. 错 2、下列配置默认路由的命令中&#xff0c;正确的是&#xff08;&#xff09;。 A. [Huawei]ip route-static 0.0.0.0 0.0.0.0 192.168.1.1 B. [Huawei-Serial0]ip route-static 0.0.0.0 0.0.0.0 0.0.0.0 C. [Huawei]ip…

如何快速从Oracle迁移到Mysql?

database 一、使用navicat工具二、问题 一、使用navicat工具 1、选择工具中的数据传输 2、源选Oracle,目标选Mysql,一直点下一步 二、问题 1、navicat连接oracle报错:Oracle library is not loaded navicat是通过oracle的客户端连接oracle的,报这个错是因为navicat for or…

Penman-Monteith模型,蒸散发、土壤蒸发、植被蒸腾,植被总初级生产力

植被总初级生产力(GPP)是指植物通过光合作用吸收的碳&#xff0c;是陆地生物圈和大气之间最大的碳通量&#xff0c;GPP的准确量化对于理解气候变化中生态系统功能、农业生产和碳循环的动态以及对气候的反馈具有重要意义 蒸散发&#xff08;Evapotranspiration&#xff0c;ET&a…

html iframe 框架有哪些优缺点?

目录 前言&#xff1a; 用法&#xff1a; 理解&#xff1a; 优点&#xff1a; 嵌套外部内容&#xff1a; 独立性&#xff1a; 分离安全性&#xff1a; 跨平台兼容性&#xff1a; 方便维护&#xff1a; 缺点&#xff1a; 性能开销&#xff1a; 用户体验问题&#xf…

线性代数-Python-02:矩阵的基本运算 - 手写Matrix及numpy中的用法

文章目录 一、代码仓库二、矩阵的基本运算2.1 矩阵的加法2.2 矩阵的数量乘法2.3 矩阵和向量的乘法2.4 矩阵和矩阵的乘法2.5 矩阵的转置 三、手写Matrix代码Matrix.pymain_matrix.pymain_numpy_matrix.py 一、代码仓库 https://github.com/Chufeng-Jiang/Python-Linear-Algebra-…

驱动开发3 ioctl函数的使用+3个实例(不传递第三个参数、第三个参数为整型、第三个参数为地址)

开发板&#xff1a;stm32mp157aaa&#xff08;Cortex-A7*2 Cortex-M4*1&#xff09;开发环境&#xff1a;vscode、串口工具、ubuntu 18.04 vscode编译过程&#xff1a; 1 引入ioctl函数的意义 linux操作系统中有意将数据的读写和读写功能的选择分别交给不同的函数去完成。就让…

【AI视野·今日Robot 机器人论文速览 第五十七期】Wed, 18 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Wed, 18 Oct 2023 Totally 17 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Underwater and Surface Aquatic Locomotion of Soft Biomimetic Robot Based on Bending Rolled Dielectric Elastomer Actua…

人工智能(6):机器学习基础环境安装与使用

1 库的安装 整个机器学习基础阶段会用到Matplotlib、Numpy、Pandas等库&#xff0c;为了统一版本号在环境中使用&#xff0c;将所有的库及其版本放到了文件requirements.txt当中&#xff0c;然后统一安装 新建一个用于人工智能环境的虚拟环境 mkvirtualenv ai matplotlib3.8…