PHP数组

数组是一个能在单个变量中存储多个值的特殊变量。

数组的英文是array,可以存入多个不同类型的数据,是一个复合数据类型。

在 PHP 中,有三种类型的数组:

  • 索引数组 - 带有数字 ID 键的数组
  • 关联数组 - 带有指定的键的数组,每个键关联一个值
  • 多维数组 - 包含一个或多个数组的数组

数组特点:

  • 键值对(key-value);
  • 键,key,存储数组中,变量的“编号”。
  • 值,value,存储数组中,变量的值。
  • 数组中的元素可以是任意类型的数据对象。
  • 索引数组,变量的“编号”是整数,整数不具备一定的语义。
  • 关联数组,变量的"编号"用字符串表示,可以具备一定的语义。

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


array 函数

在 PHP 中,array() 函数用于创建数组:

语法:

变量 = array(变量1,变量2,...);

变量 = array(
    'key1' => value1,
    'key2' => value2,
  ...
)
  • => 特殊的字符,在array 语言结构 中连接keyvalue
  • PHP 中数组的key 如果是字符串就具备一定的语义,可以非常方便的了解变量的含义。
  • PHP 数组中的key ,不建议使用除了整型和字符串的其他类型。
  • array() 不是函数,而是一种语言结构。

索引数组

直接创建

$animal[]='dog';
$animal[]='wolf';
$animal[]='cat';
var_dump($animal);

在这里插入图片描述

array创建

$stu=array("hxy",'woman',18,100);
print_r($stu);

在这里插入图片描述

关联数组

直接创建

把学生信息存储在一个变量里,需要用数组来实现。

$stu1['name'] = 'zs';
$stu1['sex'] = 'man';
$stu1['age'] = 18;
$stu1['score'] = 88;

echo "<pre>";
print_r($stu1);

image-20230817151928144

arry创建

$stu4 = array(
    'name'  => 'LSP',
    'sex'   => 'woman',
    'age'   => 19,
    'score' => 90.9
);

print_r($stu4);

print_r echo 类似,在输出布尔类型变量True 时,打印的是1;在输出False 时,打印什么都没有。

多维数组

数组中的元素可以是任何类型的数据。数组中的元素也可以是数组。

<?php
$name   = "zs";
$sex    = 'man';
$age    = 18;
$score  = 100;
$people['name']=$name;
$people['sex']=$sex;
$people['age']=$age;
$people['score']=$score;


$people1['name']='zs';
$people1['sex']='man';
$people1['age']=18;
$people1['score']=100;

$stu1['name'] = 'zs';
$stu1['sex'] = 'man';
$stu1['age'] = 18;
$stu1['score'] = 88;


$stu=array("hxy",'woman',18,100);

echo "<br />";
$ns_class=array($people,$people1,$stu,$stu1);
echo "<pre>";
print_r($ns_class);
?>

image-20230817152255076

元素访问

通过key 找到数组中的元素。

echo "hxy's score is {$stu[3]}";

echo "li's age is {$stu1['age']}";

echo "zs's age is {$ns_class[0]['age']}";

元素操作

对元素的操作包括:

数组元素操作说明
读取通过key,捕获数组中的value。
修改直接赋值即可。
增加直接赋值即可。
删除PHP 中删除数组中的元素意义不大,置之不理即可。

尝试修改数组中的元素:

echo "hxy's score is {$ns_class[2][3]}<br />";

$ns_class[2][3] += 10;
echo "hxy's score is  {$ns_class[2][3]}";
$stu1['word'] = "为往圣继绝学,为万世开太平。";
var_dump($stu1);

数组遍历

for 循环

使用for 循环可以遍历数组,但是此种方法依赖于数组中key 自然数规律。

for ($i = 0; $i < count($stu1); $i++) { 
    echo $stu1[$i]."<br />";
}

显然,此种方法具有局限性,只能遍历索引数组。

foreach 语句

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

foreach 这种语言结构是专门用来遍历数组的,foreach 是一种循环,不需要额外计时器。

foreach ($variable as $key => $value) {
    # code...
}

直接访问数组的值:

foreach ($stu as $v) {
    echo $v."<br />";
}

访问键值对:

foreach ($stu1 as $k => $v) {
    echo $k. "=". $v. "<br />";
}

注意:

  • foreach 是用来遍历数组的循环语言结构,数组中多少个元素,该语言结构就会循环执行几次。
  • foreach 语言结构中,临时变量的名字可以变化,但是语言结构不能改变。

数组相关函数

函数作用
count()count($value, $mode): int
array_count_values()array_count_values(array $array): array
in_array()检查数组中是否存在某一个元素。 此函数可以应用于黑白名单策略。
array_key_exists()
array_search()

预定义超全局数组变量

PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用

名称作用
$_GET通过URL 参数(又叫query string)传递给当前脚本的变量的数组。 注意:该数组不仅仅对method 为 GET 的请求生效,而是会针对所有带query string 的请求。
$_POST当HTTP POST 请求的==Content-Type 是application/x-www-form-urlencoded 或multipart/form-data== 时,会将变量以关联数组形式传入当前脚本。
$GLOBALS关联数组array,包含当前脚本内定义成全局范围的所有变量的引用。数组的键就是变量的名字。
$_SERVER服务器和执行环境信息。
$_FILES通过HTTP POST 方式上传到当前脚本的项目的数组。此数组的概况在POST 方法上传 章节中有描述。
$_COOKIE通过HTTP Cookies 方式传递给当前脚本的变量的数组。
$_SESSION当前脚本可用 SESSION 变量的数组。更多关于如何使用的信息,参见Session 函数 文档。
$_REQUEST默认情况下包含了$_GET,$_POST 和$_COOKIE 的数组。
$_ENV通过环境方式传递给当前脚本的变量的数组。

注意:

  • 以上数组都是预定义,超全局的。
  • 以上数组在不同的PHP 版本中有不同的表现,但是大方向没变。

$_GET

  • 接收从浏览器客户端用户GET 方式传递到服务器的参数。
  • GET 传参的参数名做$_GET 数组的key,参数值作为数组的value。
  • GET 传参时,直接将参数拼接到URL 中即可。

前端代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"
        integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="container" style="margin-top: 20%;">
        <div class="row">
            <div class="col-md-8 col-md-offset-3">
                <form class="form-inline" action="8.php" method="get">
                    <div class="form-group">
                        <label for="ip">IP:</label>
                        <input type="text" class="form-control" id="ip" placeholder="127.0.0.1" name="ipaddr">
                    </div>
                    <div class="form-group">
                        <label for="Port">Port:</label>
                        <input type="text" class="form-control" id="Port" placeholder="0-65535" name="port">
                    </div>
                    <button type="submit" class="btn btn-default">快速连接</button>
                </form>
            </div>
        </div>
    </div>

</body>

</html>

在这里插入图片描述

后端代码:

<!-- 使用switch语句编写一个程序,前端get传参,后端根据传参的端口号判断具体的服务类型 -->

<?php
$ipaddr = @$_GET['ipaddr'];
$port =  @$_GET['port'];
echo "接收到的IP地址为" . $ipaddr;
echo "<br />";
echo "<br />";
switch ($port) {
    case 80:
        echo "HTTP协议请求,80端口开放";
        break;
    case 443:
        echo "HTTPS协议请求,443端口开放";
        break;
    case 20:
        echo "FTP协议,数据端口开放  20";
        break;
    case 21:
        echo "FTP协议,控制端口开放 21";
    case 22: 
        echo "SSH协议端口开放 22";
        break;
    case 3306:
        echo "MySQL数据库端口开放  3306";
        break;
    case 27017:
        echo "MongoDB数据库端口开放 27017";
        break;
    case 6379:
        echo "Redis数据库端口开放  6379";
        break;
    case 3389:
        echo "Windows远程桌面服务端口开放  3389";
        break;
    default:
        echo "输入的端口号不在范围内。。。。";
}

在这里插入图片描述

$_POST

  • $_POST 用于接收浏览器客户端用户以POST 方式传递过来的参数。
  • POST 传参,参数在请求正文中。

前端代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"
    integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>post request</title>
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2" style="margin-top: 10%;">
                <h3 class="text-center">form表单</h3>
                <form action="1.php" method="post">
                    username:<input type="text" name="username" class="form-control" >
                    password:<input type="password" name="password" class="form-control">
                    <br>
                    <p>
                        <input type="submit" name="button" value="提交" class="btn btn-danger">
                    </p>
                </form>
            </div>
        </div>
    </div>
   
</body>
</html>

后端代码:

//1.php
<?php
$username = @$_POST['username'];
$password = @$_POST['password'];
echo $username;
echo $password;
if(!$username){
	echo 'Please input a username!!';
}
if(!$password){
	echo ' input a password  is require!!';
}
?>

$_COOKIE

为了弥补HTTP 协议的无状态性,保持用户的会话状态,需要使用Cookie 技术。

Cookie 过程:

  • 用户提交账密
  • 服务器进行身份认证
  • 下发身份证,下发Cookie。
  • 浏览器客户端用户所有的请求都会携带身份信息,携带Cookie 信息。
  • 整体流程体现为,保持了HTTP 会话的状态性。

$_REQUEST

$_REQUEST,默认包含了$_GET,$_POST,$_COOKIE 数组中的所有变量。以上提到的三个数组,包含了浏览器客户端的三大传参方式,也称GPC。

但是$_REQUEST 数组在接收参数的时候,会受到一个PHP 选项的控制。

$_FILES

相关参数

变量含义
$_FILES[‘uploaded’]用来保存文件上传信息的。 uploaded 就是文件域input 标签name 属性的值。
$_FILES[‘uploaded’][‘name’]上传文件的名字。
$_FILES[‘uploaded’][‘type’]上传文件的类型。
$_FILES[‘uploaded’][‘tmp_name’]上传文件存储在服务器中的缓存路径。
$_FILES[‘uploaded’][‘error’]错误代码。
$_FILES[‘uploaded’][‘size’]上传文件的大小
  • $_FILES 中存储的与上传文件有关的信息,不是文件本身,文件内容在缓存路径中。
  • 正常完成文件上传功能,需要将文件的从缓存拷贝到服务器文件系统中。

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

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

相关文章

ubuntu18.04安装远程控制软件ToDest方法,针对官网指令报错情况

有时我们在家办公&#xff0c;需要控制实验室的笔记本&#xff0c;因此好用的远程控制软件会让我们的工作事半功倍&#xff01; 常用的远程控制软件有ToDesk&#xff0c;向日葵&#xff0c;以及TeamViewer&#xff0c;但是为感觉ToDesk更流畅一些&#xff0c;所以这里介绍一下…

系统报错mfc100u.dll丢失的解决方法(完美解决dll问题)

系统文件mfc100u.dll丢失和出错&#xff0c;极有可能是盗号木马、流氓软件等恶意程序所导致&#xff0c;其感染相关文件并加载起来&#xff0c;一旦杀毒软件删除被感染的文件&#xff0c;就会导致相关组件缺失&#xff0c;游戏等常用软件运行不起来&#xff0c;且提示“无法启动…

QT 使用图表

目录 1、概念 1.1 坐标轴-QAbstractAxis 1.2 系列-QAbstractSeries 1.3 图例-Legend 1.4 图表-QChart 1.5 视图-QChartView 2、 QT 折线图 2.1 Qt 折线图介绍 2.2 Qt 折线图实现 Qt 图表是专门用来数据可视化的控件 Qt 图表包含折线、饼图、棒图、散点图、范围图等。…

【工具】 删除Chrome安装的“创建快捷方式”

创建Chrome的快捷方式&#xff0c;可以放在桌面&#xff0c;想用时双击就可以打开网页&#xff0c;比书签&#xff08;brookmark&#xff09;结构化管理更方便。 但是&#xff0c;安装一时爽&#xff0c;卸载有问题。 如果用 windows 控制面板\所有控制面板项\程序和功能 卸载…

Redis五大基本数据类型及其使用场景

文章目录 **一 什么是NoSQL&#xff1f;****二 redis是什么&#xff1f;****三 redis五大基本类型**1 String&#xff08;字符串&#xff09;**应用场景** 2 List&#xff08;列表&#xff09;**应用场景** 3 Set&#xff08;集合&#xff09;4 sorted set&#xff08;有序集合…

Window下部署使用Stable Diffusion AI开源项目绘图

Window下部署使用Stable Diffusion AI开源项目绘图 前言前提条件相关介绍Stable Diffusion AI绘图下载项目环境要求环境下载运行项目打开网址&#xff0c;即可体验文字生成图像&#xff08;txt2img&#xff09;庐山瀑布 参考 本文里面的风景图&#xff0c;均由Stable Diffusion…

VM部署CentOS并且设置网络

最近在准备学习k8s&#xff0c;需要部署服务器&#xff0c;所以需要在虚拟机中部署centOS服务&#xff0c;接下来我们将一步一步到操作来&#xff0c;如何在VM中不是CentOS系统。 一&#xff1a;环境 VMware Workstation Pro 链接&#xff1a;https://pan.baidu.com/s/1hSKr…

积跬步至千里 || 矩阵可视化

矩阵可视化 矩阵可以很方面地展示事物两两之间的关系&#xff0c;这种关系可以通过矩阵可视化的方式进行简单监控。 定义一个通用类 from matplotlib import pyplot as plt import seaborn as sns import numpy as np import pandas as pdclass matrix_monitor():def __init…

Spring Clould 搜索技术 - elasticsearch

视频地址&#xff1a;微服务&#xff08;SpringCloudRabbitMQDockerRedis搜索分布式&#xff09; 初识ES-什么是elasticsearch&#xff08;P77&#xff0c;P78&#xff09; 1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能…

java学习004

常用数据结构对应 php中常用的数据结构是Array数组&#xff0c;相对的在java开发中常用的数据结构是ArrayList和HashMap&#xff0c;它们可以看成是array的拆分&#xff0c;一种简单的对应关系为 PHPJAVAArray: array(1,2,3)ArrayListlArray: array(“name” > “jack”,“…

iPhone开启“轻点唤醒”功能但点击屏幕无反应怎么解决?

iPhone的“轻点唤醒”功能启用时&#xff0c;用户只需手指轻触或点击手机屏幕即可快速唤醒设备&#xff0c;无需按压任何按钮。然而&#xff0c;有些用户在使用“轻点唤醒”功能唤醒屏幕时&#xff0c;遇到该功能失灵&#xff0c;无法正常唤醒屏幕的情况&#xff0c;这是怎么回…

如何在Java实现TCP方式发送和接收Socket消息(多线程模式)

目录 导言&#xff1a;正文&#xff1a;1. 创建Server端&#xff1a;2. 创建Client端&#xff1a;3. 多线程模式&#xff1a; 代码示例Server端代码示例&#xff1a;Client端代码示例&#xff1a;同步模式发送TCP消息异步模式 结论&#xff1a; 导言&#xff1a; 在Java编程中…

python 打印沁园春 雪 居中对齐 文本对齐

以下是python 中使用 DebugInfo 模块居中对齐打印《沁园春・雪》的效果 引入模块 pip install DebugInfopython代码 # -*- coding:UTF-8 -*-# region 引入必要依赖 from DebugInfo.DebugInfo import * # endregion诗文 沁园春 雪 作者: 毛主席 北国风光&#xff0c;千里冰封…

【Linux C】在sprintf中打印双引号

0x00 前言 最后更新日期&#xff1a;2023.8.16 0x01 在sprintf中打印双引号 在字符串中有双引号”的地方前面加上一个反斜杠“\”即可&#xff0c;例如&#xff1a; char szProQuery[256] {0}; char name[256] "XiaoMing"; sprintf(szProQuery,"%s said :…

“心理健康人工智能产学研创新联盟”揭牌成立|深兰科技

8月14日上午&#xff0c;“2023树洞救援年会”在上海举行&#xff0c;会上举行了“心理健康人工智能产学研创新联盟”的签约和揭牌仪式。“树洞行动救援团”创始人深兰科技科学院智能科学首席科学家、荷兰阿姆斯特丹自由大学人工智能系终身教授黄智生&#xff0c;深兰科技集团创…

sip网络号角喇叭 sip音柱 POE供电广播音箱 ip网络防水对讲终端 sip网络功放

SV-7042TP网络号角喇叭 一、描述 SV-7042TP是我司的一款SIP网络号角喇叭&#xff0c;具有10/100M以太网接口&#xff0c;内置有一个高品质扬声器&#xff0c;将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率30W。SV-7042TP作为SIP系统的播放终端&#xff0c;可…

畜牧兽医虚拟仿真|病禽解剖VR模拟操作演练系统

在生物学课程中&#xff0c;动物解剖是一个重要的组成部分&#xff0c;它能够帮助学生了解动物的生理结构、功能和生活习性&#xff0c;从而更好地认识和保护自然界的生物多样性。然而&#xff0c;传统的动物解剖教学方法往往局限于课堂教学和实验室实践&#xff0c;学生很难真…

Redis中常见的缓存穿透、缓存击穿、缓存雪崩、缓存预热解决方案

文章目录 一、缓存穿透1. 什么是缓存穿透2. 解决方案2.1 无效的key存放到Redis2.2 引入布隆过滤器2.3 如何选择&#xff1a; 二、缓存击穿1. 什么是缓存击穿2. 解决方案 三、缓存雪崩1. 什么是缓存雪崩2. 解决方案2.1 均匀过期2.2 热点数据缓存永远不过期2.3 采取限流降级的策略…

【SpringCloud】SpringCloudAlibaba官网资料

出现原因 Spring Cloud Netflix Projects Entering Maintenance Mode 官网 博客 https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md官网 https://spring.io/projects/spring-cloud-alibaba#overview英文 https://github.com/alibaba/spring-cloud-…

.NET6.0 System.Drawing.Common 通用解决办法

最近有不少小伙伴在升级 .NET 6 时遇到了 System.Drawing.Common 的问题&#xff0c;同时很多库的依赖还都是 System.Drawing.Common &#xff0c;而 .NET 6 默认情况下只在 Windows 上支持使用&#xff0c;Linux 上默认不支持这就导致在 Linux 环境上使用会有问题&#xff0c;…