【PHP + 代码审计】数组函数

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


目录

数组的相关函数

编程思想

递推算法

递归算法


数组的相关函数

1)排序函数:对数组元素进行排序,都是按照ASCII码进行比较,可以进行英文比较

sort():顺序排序(下标重排)

rsort():逆序排序

asort():顺序排序(下标保留)

arsort():逆序排序

ksort():顺序排序:按照键名(下标)

krsort():逆序排序

shuffle():随机打乱数组元素,数组下标会重排

2)指针函数

reset():重置指针,将数组指针回到首位

end():重置指针,将数组指针指导最后一个元素

next():指针下移,取得下一个元素的值

prev():指针上移,取得上一个元素的值

注意事项:next和prev会移动指针,有可能导致指针移动到最前或者最后(离开数组),导致数组不能使用,通过next和prev不能回到真确的指针位置。只能通过end或者reset进行指针重置

3)其他函数

count():统计数组中元素的数量

array_push():往数组中加入一个元素(数组后面)

array_pop():从数组中取出一个元素(数组后面)

array_shift():从数组中取出一个元素(数组前面)

array_unshift():从数组中加入一个元素(数组前面)

PHP模拟数据结构:

栈:压栈,先进去后出来(FILO)

编程思想

编程思想:如何利用数学模式,来解决对应的需求问题;然后利用代码实现对应的数据模型(逻辑)。

算法:使用代码实现对应的数学模型,从而解决对应的业务问题。

递推算法

递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。递推算法分为顺推和逆推两种。

顺推:通过最简单的条件(已知),然后逐步推演结果

逆推:通过结果找到规律,然后推到已知条件

斐波那契数列:1 1 2 3 5 8 13 …,通常需求:请求得指定位置N所对应的值是多少

找规律:

1、 第一个数是1

2、 第二个数也是1

3、 从第三位开始:属于前两个数的和

代码解决思路:

1、 如果数字位置为1和2,结果都是1

2、 从第三个开始,想办法得到前两个的结果,就可以得到

终极解决办法:想办法把要求的位置之前的所有的值都列出来,那么要求的数就可以通过前两个之和计算出来:使用数组存储所有结果即可。

递推算法求斐波那契数列:

<?php
//递推思想(算法)
//已知条件:第一个和第三个数都是1,第三个开始为前两个之和
function my_recursive($des)
{
    //判断:如果为第一个或者第二个
    if ($des == 1 || $des == 2) return 1;

    //开始计算
    $f[1] = 1;
    $f[2] = 1;  //如果想要第一个或者第二个结果,那么可以直接给出

    $des = 15;
    for ($i = 3; $i <= $des; $i++) {
        $f[$i] = $f[$i - 1] + $f[$i - 2];
    }

    //返回最后一个位置的结果
    return $f[$des];
}

echo my_recursive(4);


递归算法

递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。

1、 简化问题:找到最优子问题(不能再小)

2、 函数自己调用自己

斐波那契数列:1 1 2 3 5 8 13 …

需求:求指定位置的数列的值

规律:第一个和第二个为1,从第三个开始为前两个之后

F(N) = F(N-1) + F(N-2);

F(N-1) = F(N-2) + F(N - 3);

F(2) = F(1) = 1;

递归思想中:有两个非常重要的点

递归点:发现当前问题可以有解决当期问题的函数,去解决规模比当前小一点的问题来解决
F(N) = F(N - 1) + F(N - 2);

递归出口:当问题解决的时候,已经到达(必须有)最优子问题,不能再次调用函数

如果一个函数递归调用自己而没有递归出口:就是死循环

递归的本质是函数调用函数:一个函数需要开辟一块内存空间,递归会出现同时调用N多个函数(自己):递归的本质是利用空间换时间

<?php
//递归思想
//递归一定有函数
function recursion($n){
    //递归出口
    if($n == 1 || $n == 2) return 1;

    //递归点
    return  recursion($n - 1) + recursion($n - 2);
}

//调用
echo recursion(10);

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

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

相关文章

安全工具介绍 SCNR/Arachni

关于SCNR 原来叫Arachni 是开源的&#xff0c;现在是SCNR&#xff0c;商用工具了 可试用一个月 Arachni Web Application Security Scanner Framework 看名字就知道了&#xff0c;针对web app 的安全工具&#xff0c;DASTIAST吧 安装 安装之前先 sudo apt-get update sudo…

力扣面试150 阶乘后的零 数论 找规律 质因数

Problem: 172. 阶乘后的零 思路 &#x1f468;‍&#x1f3eb; 大佬神解 一个数末尾有多少个 0 &#xff0c;取决于这个数 有多少个因子 10而 10 可以分解出质因子 2 和 5而在阶乘种&#xff0c;2 的倍数会比 5 的倍数多&#xff0c;换而言之&#xff0c;每一个 5 都会找到一…

AWTK T9 输入法实现原理

1. T9 输入法的中文字典数据 网上可以找到 T9 输入法的中文字典数据&#xff0c;但是通常有两个问题&#xff1a; 采用 GPL 协议&#xff0c;不太适合加入 AWTK。 只支持单个汉字的输入&#xff0c;不支持词组的输入。 经过考虑之后&#xff0c;决定自己生成 T9 输入法的中…

选择器加练习

一、常用的选择器 1.元素选择器 语法 : 标签名{} 作用 : 选中对应标签中的内容 例:p{} , div{} , span{} , ol{} , ul{} ...... 2.类选择器(class选择器) 语法 : .class属性值{} 作用 : 选中对应class属性值的元素 注意:class里面的属性值不能以数字开头,如果以符号开头,…

基于python+vue城市交通管理系统的设计与实现flask-django-php-nodejs

此系统设计主要采用的是python语言来进行开发&#xff0c;采用django/flask框架技术&#xff0c;框架分为三层&#xff0c;分别是控制层Controller&#xff0c;业务处理层Service&#xff0c;持久层dao&#xff0c;能够采用多层次管理开发&#xff0c;对于各个模块设计制作有一…

Docker 镜像仓库

目录 1、搭建私有 registry 服务端创建镜像仓库 客户端推送镜像 镜像导入导出 2、Nginx 代理 registry 仓库 SSL 证书 & https 协议 SSL证书 https协议 SSL 的验证流程 客户端安装 Nginx 使用 openssl 生成CA根证书和根证书key 创建 Nginx 服务证书 配置启动 N…

线段树和树状数组

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 树状数组和线段树1.树状数组1.1动态求连续区间和1.2数…

c#矩阵求逆

目录 一、矩阵求逆的数学方法 1、伴随矩阵法 2、初等变换法 3、分块矩阵法 4、定义法 二、矩阵求逆C#代码 1、伴随矩阵法求指定3*3阶数矩阵的逆矩阵 &#xff08;1&#xff09;伴随矩阵数学方法 &#xff08;2&#xff09;代码 &#xff08;3&#xff09;计算 2、对…

Unity Shader

练习项目链接 1. Shader 介绍 Shader其实就是专门用来渲染图形的一段代码&#xff0c;通过shader&#xff0c;可以自定义显卡渲染画面的算法&#xff0c;使画面达到我们想要的效果。小到每一个像素点&#xff0c;大到整个屏幕&#xff0c;比如下面这个比较常见的效果。 2. Sh…

javaSwing宿舍管理系统(三个角色)

一、 简介 宿舍管理系统是一个针对学校宿舍管理的软件系统&#xff0c;旨在方便学生、宿管和管理员进行宿舍信息管理、学生信息管理以及宿舍评比等操作。该系统使用 Java Swing 进行界面设计&#xff0c;分为三个角色&#xff1a;管理员、宿管和学生。 二、 功能模块 2.1 管…

RK3568平台 iperf3测试网络性能

一.iperf3简介 iperf是一款开源的网络性能测试工具&#xff0c;主要用于测量TCP和UDP带宽性能。它可以在不同的操作系统上运行&#xff0c;包括Windows、Linux、macOS等。iperf具有简单易用、功能强大、高度可配置等特点&#xff0c;广泛应用于网络性能测试、网络故障诊断和网…

深度学习绘制热力图heatmap、使模型具有可解释性

思路 获取想要解释的那一层的特征图&#xff0c;然后根据特征图梯度计算出权重值&#xff0c;加在原图上面。 Demo 加上类激活(cam) 可以看到&#xff0c;cam将模型认为有利于分类的特征标注了出来。 下面以ResNet50为例: Trick: 使用 for i in model._modules.items():可以…

二十三 超级数据查看器 讲解稿 设置

二十三 超级数据查看器 讲解稿 设置 ​点击此处 以新页面 打开B站 播放当前教学视频 点击访问app下载页面 百度手机助手 下载地址 大家好&#xff0c;这节课我们讲一下&#xff0c;超级数据查看器的设置功能。 首先&#xff0c;我们打开超级数据查看器&#xff0c; 我…

2023年全国青少年信息素养大赛(python)初赛真题

选择题&#xff08;每题5分&#xff0c;共20题&#xff0c;满分100分&#xff09; 1、关于列表的索引&#xff0c;下列说法正确的是&#xff1f; A&#xff0e;列表的索引从0开始 B&#xff0e;列表的索引从1开始 C&#xff0e;列表中可能存在两个元素的索引一致 D&#xff0…

第四百一十九回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"自定义标题栏"相关的内容&#xff0c;本章回中将介绍自定义Action菜单.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在这里提到的…

web自动化3-pytest前后置夹具

一、pytest前后置&#xff08;夹具&#xff09;-fixture 夹具的作用&#xff1a;在用例执行之前和之后&#xff0c;需要做的准备工作和收尾工作。 用于固定测试环境&#xff0c;以及清理回收资源。 举个例子&#xff1a;访问一个被测页面-登录页面&#xff0c;执行测试用例过…

SpringCloud-Gateway服务网关

一、网关介绍 1. 为什么需要网关 Gateway网关是我们服务的守门神&#xff0c;所有微服务的统一入口。 网关的核心功能特性&#xff1a; 请求路由 权限控制 限流 架构图&#xff1a; 权限控制&#xff1a;网关作为微服务入口&#xff0c;需要校验用户是是否有请求资格&am…

算法-双指针

目录 1、双指针遍历分割:避免开空间&#xff0c;原地处理 2、快慢指针&#xff1a;循环条件下的判断 3、左右指针&#xff08;对撞指针&#xff09;&#xff1a;分析具有单调性&#xff0c;避免重复计算 双指针又分为双指针遍历分割&#xff0c;快慢指针和左右指针 1、双指…

深度学习 tablent表格识别实践记录

下载代码&#xff1a;https://github.com/asagar60/TableNet-pytorch 下载模型&#xff1a;https://drive.usercontent.google.com/download?id13eDDMHbxHaeBbkIsQ7RSgyaf6DSx9io1&exportdownload&confirmt&uuid1bf2e85f-5a4f-4ce8-976c-395d865a3c37 原理&#…

C# 将 Word 转文本存储到数据库并进行管理

目录 功能需求 范例运行环境 设计数据表 关键代码 组件库引入 Word文件内容转文本 上传及保存举例 得到文件Byte[]数据方法 查询并下载Word文件 总结 功能需求 将 WORD 文件的二进制信息存储到数据库里&#xff0c;即方便了统一管理文件&#xff0c;又可以实行权限控…