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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络_03_tcp/ip四层模型

文章目录 1.为什么会有tcp/ip?2.tcp/ip是什么?3.为什么会有tcp/ip四层模型?4.tcp/ip四层模型介绍 1.为什么会有tcp/ip? 早期的计算机(计算机网络没有出现之前)几乎都是各自为战, 各种操作系统厂家百花齐放, 市面上的大部分计算机使用的都是不同的操作系统, 为每个人提供定…

GoLong的学习之路(七)语法之slice(切片)

书接上回&#xff0c;上回书中写道&#xff1a;指针&#xff0c;并说明了基本引用类型分配内存new和特定情况下slice&#xff08;切片&#xff09;&#xff0c;map&#xff0c;channel等集合函数的内存分配make。这篇文章就开始说明&#xff0c;slice。 文章目录 slice&#xf…

ACM练习C++知识点笔记

1、字符和数字的转换 #include<iostream> using namespace std; int main(){int n 8 - 48;cout<<n<<endl;return 0; } 数字转字符串 #include <string> #include <sstream> #include <iostream> using namespace std; int main() {doubl…

MySQL2:MySQL中一条查询SQL是如何执行的?

MySQL2&#xff1a;MySQL中一条查询SQL是如何执行的&#xff1f; MySQL中一条查询SQL是如何执行的&#xff1f;1.连接怎么查看MySQL当前有多少个连接&#xff1f;思考&#xff1a;为什么连接数是查看线程&#xff1f;客户端的连接和服务端的线程有什么关系&#xff1f;MySQL参数…

Zabbix出现 404Not FoundThe requested URL /zabbix was not found on this server.

目录 一、问题&#xff1a; 二、原因&#xff1a; 三、解决方法&#xff1a; 一、问题&#xff1a; Not Found The requested URL /zabbix was not found on this server. 二、原因&#xff1a; 未找到 在此服务器上找不到请求的 URL /zabbix。 /etc/httpd/conf.d 目录…

Flutter笔记:图片的 precacheImage 函数

Flutter笔记 图片的 precacheImage 函数 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/134004572 【简…

【谢希尔 计算机网络】第4章 网络层

目录 网络层 网络层的几个重要概念 网络层提供的两种服务 网络层的两个层面 网际协议 IP 虚拟互连网络 IP 地址 IP 地址与 MAC 地址 地址解析协议 ARP IP 数据报的格式 IP 层转发分组的过程 基于终点的转发 最长前缀匹配 使用二叉线索查找转发 网际控制报文协议…

【Docker】联合探讨Docker:容器化技术的革命性应用

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…

【021】整理力学拉伸实验数据(复制、黏贴、计算)_#VBA

整理力学拉伸实验数据 1. 需求2. 实现流程2.1 流程图2.2 运行方法2.3 完整代码 1. 需求 2. 实现流程 2.1 流程图 流程如上&#xff0c;因测试得到多个数据表格&#xff0c;先将表格数据合并&#xff0c;并以文件名作为每个数据的代号。然后更换坐标轴&#xff0c;通过对文件名…

docker部署prometheus+grafana服务器监控(一)

docker-compose 部署prometheusgrafana Prometheus Prometheus 是有 SoundCloud 开发的开源监控系统和时序数据库&#xff0c;基于 Go 语言开发。通过基于 HTTP 的 pull 方式采集时序数据&#xff0c;通过服务发现或静态配置去获取要采集的目标服务器&#xff0c;支持多节点工…

Python —— UI自动化之使用JavaScript进行元素点亮、修改、点击元素

1、JavaScript点亮元素 在控制台通过JavaScript语言中对元素点亮效果如下&#xff1a; 将这个语句和UI自动化结合&#xff0c;代码如下&#xff1a; locator (By.ID,"kw") # 是元组类型 web_element WebDriverWait(driver,5,0.5).until(EC.visibility_of_eleme…

java类的动态加载

java类的动态加载 java动态加载的机制&#xff1a; ClassLoader->SecureClassloader–>URLClassLoader–>AppClassLoader loadClass–>findClass(重写方法)–>defineClass(从字节码加载类) 初始化的时候会加载静态代码块 实例化的时候会加载构造代码块、无参构…

【AGC】更新应用信息报未知错误解决方法

【问题描述】 最近有几个开发者遇到了一个问题&#xff0c;他们在AGC控制台配置好应用信息的图标和截图之后&#xff0c;点击保存按钮会弹出“未知错误&#xff0c;请稍后再试”的异常报错&#xff0c;导致无法正确保存应用配置信息。 出错页面如图所示。 ​​ 【解决方案】 …

怎么防止文件夹被删除、复制?

当文件夹中存放重要数据时&#xff0c;我们需要严格保护文件夹的安全&#xff0c;避免文件夹被复制、删除。那么&#xff0c;该怎么防止文件夹被删除、复制呢&#xff1f;下面我们就一起来了解一下。 ​文件夹隐藏 当文件夹被隐藏时&#xff0c;其他人无法发现文件夹&#xff…

STM32-LCD中英文显示及应用

目录 字符编码 ASCII码&#xff08;8位&#xff09; 中文编码&#xff08;16位&#xff09; GB2312标准 GBK编码 GB18030标准&#xff08;32位&#xff09; Big5编码 Unicode字符集和编码 UTF-32&#xff08;32位&#xff09; UTF-16&#xff08;16位/32位&#xff0…

桶装水订水送水小程序开发搭建;

上门送水小程序桶装水配送是一款的同城上门配送平台&#xff0c;为用户提供便捷的桶装水配送服务。解决用户在获取干净健康的饮用水方面的需求&#xff0c;提供高效、便捷的在线预约和下单服务。 小程序平台开发&#xff0c;具备强大的技术支持和良好的用户体验。用户可以通过…

【vue3】依赖注 provide、inject(父组件与儿子、孙子、曾孙子组件之间的传值)

一、基本用法&#xff1a; //父组件 import { ref, provide } from vue const radio ref<string>(red) provide(myColor,radio) //注入依赖//儿子组件、孙子组件、曾孙子组件 import { inject } from vue import type { Ref } from vue; const myColor inject<Ref&l…

设计模式中的黄金原则:引领你的代码风格,提升可维护性与扩展性

中国的先贤说过: 有道无术,术可求.有术无道,止于术. 术指的是技能、技术或方法&#xff0c;而道指的是原则、道德、智慧和理念。 西方古代的哲人也说过同样的话: 智慧之路从感性开始&#xff0c;却终极于理性.为什么要说设计原则呢, 因为设计模式通常需要遵循一些设计原则&…

基于减法平均优化的BP神经网络(分类应用) - 附代码

基于减法平均优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于减法平均优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.减法平均优化BP神经网络3.1 BP神经网络参数设置3.2 减法平均算法应用 4.测试结果…

筹备三年,自动驾驶L3标准将至,智驾产业链的关键一跃

‍作者|张祥威 编辑|德新 多位知情人士告诉HiEV&#xff0c;智能网联汽车准入试点通知&#xff0c;乐观预计将在一个月内发布。试点的推动&#xff0c;意味着国家层面的自动驾驶L3标准随之到来。 「L3标准内容大部分与主机厂相关&#xff0c;由工信部牵头&#xff0c;找了几家…