Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP数组

PHP数组

作者头像
Mirror王宇阳
发布于 2020-11-10 15:07:38
发布于 2020-11-10 15:07:38
8.4K00
代码可运行
举报
运行总次数:0
代码可运行

PHP数组:

创建定义数组:
数值数组:
array():定义数组
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$Array = array("Ubantu","CetOS","Kali");

如上array()函数定义的内容会以数组的形式传给变量Array

  • 自动分配ID键: $Array = array("Ubantu","CetOS","Kali");
  • 手工分配ID键: $Array[0]="Kali"; $Array[1]="CetOS"; $Array[2]="Ubantu";
count():获取数组长度
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
count($Array);

count()函数返回数组的长度

  • 关联数组:带有指定键的数组,每个键关联一个值(类似键值对)
  • 多维数组:每一个数组值中包含另外一个或多个数组
关联数组:
创建方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$Array = array("A"=>"Ubantu","B"=>"CetOS","C"=>"Kali");

or

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$Array["A"]="Kali";
$Array["B"]="CetOS";
$Array["C"]="Ubantu";
多维数组:
  • 定义:一个数组中的值可能是另外一个数组,以此类推……
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
$cars = array (
	array("CN","+86","中国"),
    array("US","+1","美国"),
    array("TH","+66","泰国")
);
?>
数组遍历或输出:
遍历数值数组:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php 
	$Array = array("Ubantu","CetOS","Kali");
	$x = 0 ;
	while ($x < count($Array)) { 
		// (循环)遍历输出Array数组,利用count()函数控制循环
		echo $Array[$x++]."<br />" ;
	}
?>
遍历关联数组:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php 
	$Array = array("A"=>"Ubantu","B"=>"CetOS","C"=>"Kali");
	// 使用“键”来输出数组的 value
	echo $Array["A"]."<br />".$Array["B"]."<br />".$Array["C"]."<br />" ;
?>
数组排序
sort():升序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    $Array = array("Ubantu","CetOS","Kali");
	sort($Array);
    ?>

sort()函数的语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sort(array,sortingtype);
  • sortingtype参数(可选) 0 = SORT_REGULAR(默认) :把每一项按常规(ASCII)顺序排序 1 = SORT_NUMERIC:把每一项按数字进行处理 2 = SORT_STRING:把每一项按字符串进行处理 3 = SORT_LOCALE_STRING:按字符串处理
rsort():降序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    $Array = array("Ubantu","CetOS","Kali");
	rsort($Array);
    ?>
asort():关联数组key升序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    $Array = array("A"=>"Ubantu","B"=>"CetOS","C"=>"Kali");
	asort($Array);
    ?>

根据关联数组中的key进行数组升序

ksort():关联数组value升序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    $Array = array("A"=>"Ubantu","B"=>"CetOS","C"=>"Kali");
	ksort($Array);
    ?>
arsort():关联数组key降序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    $Array = array("A"=>"Ubantu","B"=>"CetOS","C"=>"Kali");
	arsort($Array);
    ?>
krsort():关联数组value降序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    $Array = array("A"=>"Ubantu","B"=>"CetOS","C"=>"Kali");
	krsort($Array);
    ?>
array_multisort():多维数组排序

array_multisort()函数可以用来排序多维数组或者一次排序多个数组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
	$cars = array (
		array("CN","+86","中国"),
    	array("US","+1","美国"),
    	array("TH","+66","泰国")
	);
	array_multisort($cars);

?>

函数会根据每一个数组的第一个元素(cars[x] [0])进行排序操作;

函数默认是进行升序排序,同时函数也接受第二个参数指定排序方法:SORT_ASC(升序)、SORT_DESC(降序)

usort():用户自定义排序

实现自定义排序方法,就需要使用函数:usort() 告诉PHP如何对排序对象进行比较

PHP内置了比较函数:compare(),用户自定义排序方法需要覆写PHP的比较函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function compare($x , $y) {
    if ($x[1] == $y[1]){
        return 0;
    } else if ($x[1] < $y[1]) {
        return -1 ;
    } else {
        return 1 ;
    }
}
usort($cars,'compare');

通过覆写compare()函数,比较x和y两个数组;该函数的最主要的作用就是比较两个值的大小;调用usort()函数自定义排序,(usort()函数希望排序数组$cars数组并指定比较操作compare()函数);usort()函数则根据compare()比较函数返回的结果进行排序操作;同样ursort()函数则是按照降序进行排序或者是将比较函数的返回值规则进行修改。

uasort():key排序 uksort():value排序 usort():排序

shuffle():随机排序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    $Array = array("Ubantu","CetOS","Kali");  
	shuffle($Array);
?>
array_reverse():逆向排序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
	$Array = array("Ubantu","CetOS","Kali");
	shuffle($Array);
	$Array = array_reverse($Array);
?>

函数会将数组逆向然后将数组逆向后的结果拷贝给变量,不会改变原有数组变量内容

explode():设置分隔符

主要是将大量的字符串按照规定的分隔符,单一存入数组中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array explode(string separator , string string [, int limit]);

第一个参数是指定的分隔符,第二个参数是字符串内容(数组中的字符串)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<body>
	<?php 
		$Array = array();
		$File = file("file.txt");
		$Size = count($File);
		for ($i=0; $i < $Size; $i++) { 
			$Array = explode("0", $File[$i]);
		}
		print_r($Array);
	 ?>
</body>
</html>
intval():字符数字转为数字
数组浏览:
current():返回数组中当前元素
reset():返回第一个元素(key)
end():返回最后一个元素(key)
each():前移一位指针并返回元素(value)
next():后移一位指针并返回元素(value)
pos()/prev():当前指针往回移一个位置然后返回元素
数组元素引用函数:
array_walk():
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php 
	$Array = array("Ubantu","CetOS","Kali");
	function my_print($value){
		echo "$value<br />" ;
	}
	array_walk($Array, 'my_print'); 
?>

上述代码通俗解释:array_walk()函数将为数组的每一个元素去调用my_print函数,并将元素传给函数参数

数组统计:
count():返回数组元素数量
sizeof():返回数组元素数量
array_count_values():统计特定值在数组中出现的次数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php 
	$Array = array(4,5,2,3,5,6,3,7,2,4,7,4,2,7,3,3,3,7,3,2);
	$sum = array_count_values($Array);
	print_r($sum);
?>

数组sum将会接收函数返回的结果,结果是由Array数组中的特定值的次数组成的键值对(关联数组)特定值作为key,出现次数作为value

数组转为标量变量:extract()

对于一个非数字索引的数组,会出现非常多的键值对,使用extract()函数可以将key变为一个标量变量,由此可以通过访问变量的方式访问key对应的value

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extract(array var_array [, int txtract_type] [, string prefix]);

函数的作用就是通过一个数组拆个年间一系列的标量变量,这些标量就是数组中的key,而变量就是数组中key对应的value

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php 
	$Array = array("A"=>"Ubantu","B"=>"CetOS","C"=>"Kali");
	extract($Array);
	echo "$A  $B $C";// 输出结果: Ubantu CetOS Kali
?>

另外参数extract会告诉函数如何处理与已有函数的冲突问题;而prefix参数则是应用到一个函数当中

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
由一次渗透测试引发的HTTP请求走私思考
前几天朋友发了一个朋友圈说他的网站刚建好没有多久就被别人给脱库了,里面有一些客户的资料,有点难受。便向他询问了一些事情,溯源无果后便和他商量了一下帮助他将再次新建的网站进行了一次友情渗透测试。而HTTP请求走私漏洞也是在其中发现的一个可以小事化大,大事化危的一个漏洞。遂将其发现过程记录下来
谢公子
2022/01/20
9790
由一次渗透测试引发的HTTP请求走私思考
请求走私利用实践(上)
在上次的"Websocket通信安全概览"一文中对WebSocket的请求走私做了一个简单的介绍后总觉得对请求走私这一部分知识内容缺乏一个完整性的梳理,后面经过几次断断续续的补充以及时间的拼凑最终有了这一篇较为完整的关于请求走私的介绍文章和利用实践文章,而这也算是填补了自己之前遗留的一个坑吧
Al1ex
2024/01/26
4750
请求走私利用实践(上)
请求走私利用实践(下)
假设应用程序使用前端服务器来实现访问控制限制,仅当用户被授权访问所请求的URL时才转发请求,然后后端服务器接受每个请求,而不做进一步的检查,在这种情况下可以利用HTTP请求走私漏洞通过请求走私访问受限制的URL从而绕过访问控制,假如允许当前用户访问/home,但不允许访问/admin,他们可以使用以下请求走私攻击绕过这一限制:
Al1ex
2024/01/26
2640
请求走私利用实践(下)
HTTP2请求走私(上)
HTTP/2是HTTP协议自1999年HTTP 1.1发布后的首个更新,它由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组进行开发,该组织于2014年12月将HTTP/2标准提议递交至IESG进行讨论并于2015年2月17日被批准,目前多数主流浏览器已经在2015年底支持了该协议,此外根据W3Techs的统计数据表示自2017年5月,在排名前一千万的网站中有13.7%支持了HTTP/2,本篇文章我们将主要对HTTP/2协议的新特性以及HTTP/2中的请求走私进行详细介绍
Al1ex
2024/02/01
3680
HTTP2请求走私(上)
HTTP2请求走私(下)
网站即使采取措施阻止基本H2.CL或H2.TE攻击(例如:验证content-length或剥离任何transfer-encoding头),我们也可以通过利用HTTP/2的二进制格式中允许的一些方法来绕过这些前端措施,在HTTP/1中我们有时可以利用服务器处理独立换行符(\n)方式之间的差异来走私被禁止的头
Al1ex
2024/02/01
4890
HTTP2请求走私(下)
[ffffffff0x] 浅析 HTTP Smuggling 攻击
由于各种各样的原因,各网站通常使用多级代理模式对外开放Web服务,如CDN、Nginx代理等。HTTP/1.1 版本倾向于使用keep-alive长连接进行通信,提高前后端之间的通讯效率。也就是说多个人的流量可能会在前后端之间的同一个tcp会话中传输,另外前后端对于Content-Length和Transfer-Encoding的解析处理方法不同,有可能造成请求污染的情况,直接导致HTTP Smuggling攻击的出现。
r0fus0d
2020/12/27
1.1K0
[ffffffff0x] 浅析 HTTP Smuggling 攻击
协议层的攻击——HTTP请求走私
最近在学习研究BlackHat的议题,其中有一篇议题——"HTTP Desync Attacks: Smashing into the Cell Next Door"引起了我极大地兴趣,在其中,作者讲述了HTTP走私攻击这一攻击手段,并且分享了他的一些攻击案例。我之前从未听说过这一攻击方式,决定对这一攻击方式进行一个完整的学习梳理,于是就有了这一篇文章。
知道创宇云安全
2019/10/11
2K0
协议层的攻击——HTTP请求走私
非侵入式入侵 —— Web缓存污染与请求走私
本文介绍了两种攻击者无需直接接触服务端即可攻击和影响用户行为的安全漏洞 —— Web缓存污染与请求走私。Web缓存污染旨在通过攻击者向缓存服务器投递恶意缓存内容,使得用户返回响应结果而触发安全风险。HTTP请求走私旨在基于前置服务器(CDN、反向代理等)与后置服务器对用户请求体的长度判断标准不一致的特性,构造能够被同一TCP连接中其它用户夹带部分恶意内容的攻击请求,从而篡改了受害者的请求与响应行为。两种漏洞均需要通过针对中间件的合理配置与业务接口的合理设计进行排查和防御。
2020labs小助手
2023/03/14
6220
请求走私利用扩展
在之前我们介绍了HTTP/1和HTTP/2的请求走私原理以及利用方法,本篇文章将对此进行进一步扩展介绍一些特殊的场景下的请求走私的检测以及利用方式和思路,对请求走私进行一个扩展补充,例如:CL.0请求走私、H2.0走私、去同步化攻击等,同时本篇文章也是对请求走私系列的最后一个收官,至此请求之前留下的请求走私的坑也算是被填完了
Al1ex
2024/02/22
4110
请求走私利用扩展
初探HTTP请求走私
文章首发于跳跳糖社区https://tttang.com/archive/1808/
用户9691112
2023/05/18
2K0
初探HTTP请求走私
Web Security 之 CSRF
在本节中,我们将解释什么是跨站请求伪造,并描述一些常见的 CSRF 漏洞示例,同时说明如何防御 CSRF 攻击。
凌虚
2021/03/19
2.6K0
Web Security 之 CSRF
Web Security 之 HTTP Host header attacks
在本节中,我们将讨论错误的配置和有缺陷的业务逻辑如何通过 HTTP Host 头使网站遭受各种攻击。我们将概述识别易受 HTTP Host 头攻击的网站的高级方法,并演示如何利用此方法。最后,我们将提供一些有关如何保护自己网站的一般建议。
凌虚
2021/03/19
6.5K0
Web Security 之 HTTP Host header attacks
基于select IO复用的HTTP服务器(十一)
没想到距离上篇文章才过去仅仅半个多月就发生了这么多的事情,其之沉、其之重、其之殇,如氤氲般笼罩环绕在这片古老的大地上。钟南山眼中的泪水让我没有丝毫的心情再在文章中随手写段子,白衣天使们脸上的疲倦让我没有了任何像以往那种调侃方式写文章的感觉。可能你们不太会适应失去了段子的本公号,但是只要哪天钟佬说“ 可以了 ”,我立马就恢复如初。
老李秀
2020/02/19
1.3K0
CTF中的请求走私
HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列方式的技术,它允许攻击者绕过安全控制获得对敏感数据的未经授权的访问并直接危害其他应用程序用户,请求走私大多发生于前端服务器和后端服务器对客户端传入的数据理解不一致的情况,主要是因为HTTP规范提供了两种不同的方法来指定请求的结束位置,即Content-Length和Transfer-Encoding标头,请求走私主要与HTTP/1请求相关,但是支持HTTP/2的网站可能容易受到攻击,具体取决于其后端架构,本篇文章我们主要介绍一些CTF中常见的请求走私题目并对请求走私的利用实现一个强化效果
Al1ex
2024/01/22
3430
CTF中的请求走私
rfc7230 Message Syntax and Routing
HTTP使用.来标识协议版本。本规范定义的版本为"1.1"。版本号表示发送端遵从对应HTTP版本的实现需求。
charlieroro
2020/03/24
1.1K0
Responses 部分
(3)HTTP/1.1: URI(Uniform Resource Identifier,统一资源标识符)及其版本
翎野君
2023/05/12
3110
Responses 部分
Smuggler:一款功能强大的HTTP请求走私和去同步安全测试工具
Smuggler是一款功能强大的HTTP请求走私和去同步安全测试工具,该工具基于纯Python 3开发,可以帮助广大研究人员针对应用程序的HTTP协议执行安全分析和测试。
FB客服
2024/03/01
3560
Smuggler:一款功能强大的HTTP请求走私和去同步安全测试工具
Web Security 之 CORS
在本节中,我们将解释什么是跨域资源共享(CORS),并描述一些基于 CORS 的常见攻击示例,以及讨论如何防御这些攻击。
凌虚
2021/03/03
1.5K0
从项目实际问题引发的思考
现在有一个 Web 项目,前端是使用 Vue.js 开发的,整个前端需要部署到 K8S 上,后端和前端分开,同样也需要部署到 K8S 上,因此二者需要打包为 Docker 镜像。
崔庆才
2019/12/11
5930
netty对http协议解析原理解析
本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能。 1 http协议 1.1 描述 标示
xiangzhihong
2018/02/05
3.4K0
netty对http协议解析原理解析
相关推荐
由一次渗透测试引发的HTTP请求走私思考
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验