php 数组基础/练习

news2024/11/18 15:53:23

数组

练习在最后

数组概述

概述与定义

  • 数组中存储键值对

    数组实际上是一个有序映射 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI作画使用指南

AI作画API使用文档请前往&#xff1a;https://blog.csdn.net/qq_48896417/article/details/132520804 一、定义 AI作画使用指南 二、形式 「公式」 图片主体&#xff0c;细节词&#xff0c;修饰词 细节词可以任意组合&#xff0c;修饰词可以限定一种风格&#xff0c;也可以…

永恒之蓝 ms17-010

文章目录 永恒之蓝 ms17-0101. 漏洞介绍1.1 影响版本1.2 漏洞原理 2. 信息收集2.1 主机扫描2.2 端口扫描 3. 漏洞探测4. 漏洞利用5. 特殊情况5.1 安装wine32环境5.2 安装攻击32位操作系统所用的的脚本 永恒之蓝 ms17-010 很久之前做过的永恒之蓝漏洞… 1. 漏洞介绍 永恒之蓝…

【STM32】RCC时钟模块(使用HAL库)

https://gitee.com/linhir-linhir/stm32-f103-c8/blob/master/STM32%E6%9C%80%E6%96%B0%E5%9B%BA%E4%BB%B6%E5%BA%93v3.5/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h STM32最新固件库v3.5/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c…

Linux环境开发工具yum、makefile的使用 【Linux】

文章目录 Linux软件包管理器 - yumLinux下安装软件的方式yum查找软件包如何实现本地机器和云服务器之间的文件互传卸载软件Linux编译器 - gcc/g 程序的翻译过程1.预编译&#xff08;预处理&#xff09;2.编译&#xff08;生成汇编&#xff09;3.汇编&#xff08;生成机器可识别…

MySQL数据库 #3

文章目录 一、创建表的完整语法二、约束条件1.unsigned &#xff08;无符号&#xff09;2. zerofill &#xff08;0填充&#xff09;3. default &#xff08;默认值&#xff09;4. not null&#xff08;非空&#xff09;5. unique&#xff08;唯一&#xff09;6. primary key &…

1024程序员节背后的秘密:1024程序员节的前世今生

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

中国艺术孙溟㠭篆刻《绕绕》

孙溟展先生现在的这方篆刻作品&#xff0c;没有使用大篆和小篆文字来篆刻&#xff0c;彰显篆刻的金石魅力。一改以往的不同&#xff0c;以圆形组合设计&#xff0c;用篆刻的刀法刻出&#xff0c;即体现篆刻的美&#xff0c;又达到了作者想表达的感情。这方篆刻作品溟展先生起名…

SD NAND

文章目录 前言SD NAND vs SD 卡SD NAND vs SPI NANDCS SD NAND 优势芯片介绍结构框图引脚介绍参考设计 焊接测速单片机读写测试作为 ARM Linux 系统盘使用 前言 提到 SD&#xff0c;最先想到的就是 SD 卡&#xff0c;由于体积关系&#xff0c;TF 卡使用得更为普遍&#xff0c;…

[Ubuntu 18.04] 搭建文件夹共享之Samba服务器

Samba是一个开源项目,允许Windows用户在Linux和Unix系统上进行文件共享。 Samba服务器是一个可以让Linux或Unix系统在网络上充当Windows NT/2000/XP/2003等网络操作系统的共享资源的软件。它允许用户通过SMB/CIFS协议在Linux或Unix系统与Windows共享资源。 Samba服务器的主要…

VRPTW(MATLAB):淘金优化算法GRO求解带时间窗的车辆路径问题VRPTW(提供参考文献及MATLAB代码)

一、VRPTW简介 带时间窗的车辆路径问题(Vehicle Routing Problem with Time Windows, VRPTW)是车辆路径问题(VRP)的一种拓展类型。VRPTW一般指具有容量约束的车辆在客户指定的时间内提供配送或取货服务&#xff0c;在物流领域应用广泛&#xff0c;具有重要的实际意义。VRPTW常…

ARM | 传感器必要总线IIC

IIC总线介绍 1.谈谈你对IIC总线理解&#xff1f; 1&#xff09;IIC总线是串行半双工同步总线,主要用于连接整体电路 2&#xff09;SCL/SDA作用:IIC是两线制,一根是时钟线SCK,用于控制什么时候进行进行数据传输,时钟信号由主机发出; 另一根是数据线SDA,用于进行数据传输,可以从…

垃圾收集器与内存分配策略

概述 垃圾收集需要完成的三件事情&#xff1a; 哪些内存需要回收&#xff1f;什么时候回收&#xff1f;如何回收&#xff1f; 判断对象是都存活的算法&#xff1a; 引用计数法&#xff1a;在对象中添加一个引用计数器&#xff0c;每当有一个地方引用时&#xff0c;计数器值就…

python基础教程:异常处理

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 有时候我们在写程序的时候会出现错误或者异常&#xff0c;导致程序终止&#xff0c;如下这个例子&#xff1a; #!/usr/bin/env python a 2/0 print(a)结果提示如…

Visual Studio Professional 2019 软件安装教程(附安装包下载)

Microsoft Visual Studio 是一个非常强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;适用于 Windows 上的 .NET 和 C 开发人员。它提供了一系列丰富的工具和功能&#xff0c;可以提升和增强软件开发的每个阶段。 Visual Studio IDE 是一个创意启动板&#xff0c;可…

C++ 多线程编程和同步机制:详解和实例演示

C中的多线程编程和同步机制使得程序员可以利用计算机的多核心来提高程序的运行效率和性能。本文将介绍多线程编程和同步机制的基本概念和使用方法。 多线程编程基础 在C中&#xff0c;使用<thread>库来创建和管理线程。线程可以通过函数、成员函数或者Lambda表达式来实现…

基于C#使用winform技术的游戏平台的实现【C#课程设计】

基于C#使用winform技术的游戏平台的实现【C#课程设计】 说明项目结构项目运行截图及实现的功能 部分代码一些说明(个人觉得一些难点的说明)一、ListView &#xff0c;ImageList 的综合使用二、图片上传以及picturebox 图片的动态替换三、图表插件的使用四、SQL工具类封装五、高…

最新哔哩哔哩邮箱绑定接口签名JS逆向分析

本章教程主要逆向分析 哔哩哔哩邮箱绑定接口biliCSRF 和mid 参数。 教程仅供学习参考,请勿滥用,由此带来的法律责任需由自己承担。 目录 一、接口参数分析 二、签名加密代码 三、滑块验证码 一

LabVIEW应用开发——控件的使用(四)

接上文&#xff0c;这篇介绍时间控件。 LabVIEW应用开发——控件的使用&#xff08;三&#xff09; 1、时间控件Time Stamp control 在日常软件开发场景中&#xff0c;时间也是一种常用的控件&#xff0c;用于表达当前时间的显示、对下设置时间、时间同步等等场景。LabVIEW专门…

Redis主从模式(一)----搭建主从结构并演示

目录 一, 主从模式 1.1 单个Redis服务器可能存在的问题 1.2 单点问题 1.3 什么是主从模式 概念 图示 二, 演示Redis的主从复制 2.1 Redis-server进程 2.2 建立复制 1. 首先将redis.conf配置文件复制一份并修改daemonize 为 yes 2.修改配置文件中的端口号 3. 分别在…

力扣每日一题63:不同路径||

题目描述&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物…