php 递归面试题_8个PHP数组面试题,php数组试题

2023-10-31

8个PHP数组面试题,php数组试题

网上找的PHP数组题,准备自己做一遍并且记录下来。

1.写函数创建长度为10的数组,数组中的元素为递增的奇数,首项为1.

复制代码 代码如下:

function arrsort($first,$length){

$arr = array();

for($i=$first;$i<=$length;$i++){

$arr[] = $i*2-1;

}

return $arr;

}

$arr1 = arrsort(1,10);

print_r($arr1);

输出:

复制代码 代码如下:

Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 [5] => 11 [6] => 13 [7] => 15 [8] => 17 [9] => 19 )

2.创建长度为10的数组,数组中的数为递增的等比数,比值为3,首项为1.

复制代码 代码如下:

//$num为比值

function arrsort($first,$length,$num){

$arr= array();

for($i=$first;$i<=$length;$i++){

//pow($num,$i-2);返回$num的($i-2)次方

$arr[] = $num*pow($num,$i-2);

}

return $arr;

}

$arr1 = arrsort(1,10,3);

print_r($arr1);

输出:

复制代码 代码如下:

Array ( [0] => 1 [1] => 3 [2] => 9 [3] => 27 [4] => 81 [5] => 243 [6] => 729 [7] => 2187 [8] => 6561 [9] => 19683 )

3.求数组中最大数的下标.

复制代码 代码如下:

function maxkey($arr){

$maxval = max($arr);

foreach($arr as $key=>$val){

if($maxval == $val){

$maxkey = $key;

}

}

return $maxkey;

}

$arr = array(0,-1,-2,5,"b"=>15,3);

echo maxkey($arr);

输出:

复制代码 代码如下:

b

4.创建一个长度为10的数组,数组中的元素满足斐波拉契数列的规律.

( 斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*). 特别指出:第0项是0,第1项是第一个1。)

复制代码 代码如下:

function arrFibo($len){

$arr[0] = 0;

$arr[1] = 1;

for($i=2;$i

$arr[$i] = $arr[$i-1]+$arr[$i-2];

}

return $arr;

}

echo "";

print_r(arrFibo(10));

echo "";

输出:

复制代码 代码如下:

Array

(

[0] => 0

[1] => 1

[2] => 1

[3] => 2

[4] => 3

[5] => 5

[6] => 8

[7] => 13

[8] => 21

[9] => 34

)

5.计算数组中最大数和最小数的差.

两种方法:

①max/min

输出:

复制代码 代码如下:

102

②sort把元素按从小到大排序/rsort吧元素按从大到小排序

复制代码 代码如下:

function arrsub($arr){

sort($arr);

$min = $arr[0];

rsort($arr);

$max = $arr[0];

$sub = $max - $min;

return $sub;

}

$arr = array(-1,-2,100);

echo arrsub($arr);

输出:

102

6.写一个方法,将一个长度超过10的数组最后5项直接截取,不改变顺序变为前5项,如{1,2,3,4,5,6,7,8,9,10}变为{6,7,8,9,10,1,2,3,4,5}.

思路:先把数组截取相应的长度( array_slice ),再把2段数组拼接( array_merge )

复制代码 代码如下:

function arrsort($arr){

$num = count($arr);

if($num > 10){

//array_slice($arr,起始位置,截取长度,保留索引(默认为false))

$arr_firstpart = array_slice($arr,0,$num-5,true);

$arr_lastpart = array_slice($arr,($num-5),5,true);

}else{

echo "数组不超过10个元素,请重新输入";

exit();

}

//拼接

$arr_new = array_merge($arr_lastpart,$arr_firstpart);

return $arr_new;

}

$arr = array("a"=>1,2,3,8,9,6,"b"=>5,-1,"c"=>8,0,7);

echo "";

print_r($arr);

echo "

= = = = = 拼接后 = = = =

";

print_r(arrsort($arr));

echo "";

输出:

复制代码 代码如下:

Array

(

[a] => 1

[0] => 2

[1] => 3

[2] => 8

[3] => 9

[4] => 6

[b] => 5

[5] => -1

[c] => 8

[6] => 0

[7] => 7

)

= = = = = 拼接后 = = = =

复制代码 代码如下:

Array

(

[b] => 5

[0] => -1

[c] => 8

[1] => 0

[2] => 7

[a] => 1

[3] => 2

[4] => 3

[5] => 8

[6] => 9

[7] => 6

)

当数组不满足长度为10时:

复制代码 代码如下:

$arr = array("a"=>1,2,3);

输出:

复制代码 代码如下:

Array

(

[a] => 1

[0] => 2

[1] => 3

)

= = = = = 拼接后 = = = =

数组不超过10个元素,请重新输入

7.将两个数组连接成一个新数组.

方法①使用array_merge()函数

复制代码 代码如下:

array_merge($arr1,$arr2);

方法②使用array_merge_recursive()函数递归追加数组

( array_merge_recursive() 函数与 array_merge() 函数 一样,将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面。并返回作为结果的数组。

但是,与 array_merge() 不同的是,当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组。)

复制代码 代码如下:

$arr = array("a"=>1,"b"=>2,3);

$arr2 = array("a"=>Dee,3,5);

$arr3 = array_merge($arr,$arr2);

$arr4 = array_merge_recursive($arr,$arr2);

echo "";

print_r($arr3);

echo "

= = = = =

";

print_r($arr4);

echo "";

输出:

复制代码 代码如下:

Array

(

[a] => Dee

[b] => 2

[0] => 3

[1] => 3

[2] => 5

)

= = = = =

复制代码 代码如下:

Array

(

[a] => Array

(

[0] => 1

[1] => Dee

)

[b] => 2

[0] => 3

[1] => 3

[2] => 5

)

第一个输出的数组中索引为"a"的值1被索引被第二个数组中索引为"a"的值Dee覆盖了。

方法③

复制代码 代码如下:

function arrsort($arr1,$arr2){

$arr_new = $arr1;

foreach($arr2 as $key=>$val){

$arr_new[] = $val;

}

return $arr_new;

}

$arr1 = array("a"=>1,"b"=>2,3);

$arr2 = array("a"=>Dee,"c"=>3,5);

echo "";

print_r(arrsort($arr1,$arr2));

echo "";

输出:

复制代码 代码如下:

Array

(

[a] => 1

[b] => 2

[0] => 3

[1] => Dee

[2] => 3

[3] => 5

)

如果是索引数组而且有重复的索引,则第二个数组中的这个重复的索引会被修改成新的索引。

8.数组逆序( 不能使用rsort函数,不能生成新数组 )

使用array_reverse()函数会创建新的数组,所以不能使用。

复制代码 代码如下:

$arr = array("a","b","c",1,10);

$i = "";//要替换位置的数的下标

$j = "";//临时变量

$k = "";//被替换位置的数的下标

$len = count($arr);

$half_len = floor($len/2);//向下取整,取整的值是循环的次数

for($i=0;$i

$j = $arr[$i];

//判断数组个数奇偶

if($len%2!=0){ //奇数

$k = $half_len*2-$i;

}else{

//偶数

$k = $half_len*2-$i-1;

}

$arr[$i] = $arr[$k];

$arr[$k] = $j;

}

echo "";

print_r($arr);

echo "";

输出:

复制代码 代码如下:

Array

(

[0] => 10

[1] => 1

[2] => c

[3] => b

[4] => a

)

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php 递归面试题_8个PHP数组面试题,php数组试题 的相关文章

  • xss绕过尖括号和双括号_xss防御及绕过-小记1

    XSS搞安全的应该都很熟悉 本次并不是说其原理 仅是分享下在测试过程中遇到的案例 本人小白一枚 所以案例大佬们看着可能非常简单 就当是记录下自己笔记吧 不喜勿喷哈 关于xss的防御 基本上都是采用输入过滤 输出编码 最近做的一个项目中的某个
  • 数据分析-学术前沿趋势分析三

    数据分析 学术前沿趋势分析三 简介 数据处理 正则表达式 具体代码实现以及讲解 简介 该博客将继续对论文进行分析 这次是论文代码统计 统计所有论文出现代码的相关统计 使用正则表达式统计代码连接 数和图表数据 数据处理 正则表达式 在进行数据
  • impala高级设置之BROADCAST_BYTES_LIMIT

    官网地址 https impala apache org docs build html topics impala broadcast bytes limit html Sets the limit for the size of the
  • Linux怎么查看group

    2023年9月20日 周三晚上 目录 查看group的命令 我输入命令后得到的group信息 怎么看这些信息 查看group的命令 cat etc group 我输入命令后得到的group信息 root x 0 daemon x 1 bin
  • 【LLM】如何使用单个GPU 微调 Llama2

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 千兆以太网芯片88E1111 RGMII模式的驱动

    88E1111可工作在10Mb s 100Mb s 1000Mb s下 由于DE2 115开发板在设计的时候只采用了4位数据端口 因此只能采用MII模式 100Mb s 或者RGMII模式 1000Mb s 看了官方的DATASHEET后
  • python是一种面向什么的高级语言

    python是一种面向什么的高级语言 Python是一种面相对象 解释型的计算机程序语言 并已成为学习数据科学 虚拟现实和人工智能的首选编程语言 其设计哲学是 优雅 明确 简单 易上手 及时反馈的特点成了很多入门编程世界的首选 同时Pyth
  • git国内镜像源(64位)

    点此前往
  • Android Studio : cmdline-tools component is missing. Android license status unknown.

    运行flutter doctor报错 D AndroidStudio projectLocations gt flutter doctor Doctor summary to see all details run flutter doct
  • Caused by: java.lang.IllegalStateException: Logback configuration error detected:

    项目场景 今天像往常一样打了个jar包 在本地是可以运行的 放测试环境上就不能运行了 整了半小时才看明白 以后一定要认识看报错信息 问题描述 在本地测试可以运行 在测试环境报 Caused by java lang IllegalState
  • 【自学C++】C++ short

    C short C short教程 C 中的 short 用来表示一个 整数 也可以叫做短整型 如果我们需要表示的整数比较小 那么我们可以使用 short 来定义 这样可以节省系统资源 C short定义详解 语法 short int va
  • python学习-面向对象进阶之闭包(八)

    闭包 1 函数引用 def test1 print in test1 func 调用函数 test1 引用函数 ret test1 print id ret print id test1 通过引用调用函数 ret 运行结果 in test1
  • 第19章 通信-模拟I2C

    一 关于I2C 1 1 I2C协议 I C Inter Integrated Circuit 常读作 I方C 它是一种多主从架构串行通信总线 在1980年由飞利浦公司设计 用于让主板 嵌入式系统或手机连接低速周边设备 I C由两条线组成 一
  • JAVA开发(外部接口调用授权问题记录总结)

    一 技术背景 现在很多web项目或者小程序在上线后都需要进行交叉引流 交叉业务合作 数据传输 与其他的企业 网站 app合作 那么就需要接口数据调用 那么在做外部系统接口调用和自己开发的微服务间的接口调用显然是不同的 最明显的特征就是 系统
  • Simple_SSTI_1与Simple_SSTI_2

    目录 一 Simple SSTI 1 二 Simple SSTI 2 一 Simple SSTI 1 首先打开场景 然后F12查看一下源码 于是通过百度相关知识寻找线索 1 SSTI 服务器端模版注入是指攻击者能够使用本机模板语法将恶意有效
  • BES2500/BES2300 学习笔记目录

    交流学习 如有错误欢迎指正 by wwdeng QQ 435398366 BES2500 BES2300 学习笔记目录 开发环境 代码编辑器 vscode Source Insight 编译 Windows Linux 调试 Trace 工
  • HTML5知识点总结

    1 什么是 HTML5 1 1 HTML版本 1 2 HTML5简介 万维网的核心语言 标准通用标记语言下的一个应用超文本标记语言 HTML 的第五次重大修改 用于取代HTML4与 XHTML的新一代标准版本 所以叫HTML5 XHTML
  • Spring-Resource接口

    4 1 1 概述 在日常程序开发中 处理外部资源是很繁琐的事情 我们可能需要处理URL资源 File资源资源 ClassPath相关资源 服务器相关资源 JBoss AS 5 x上的VFS资源 等等很多资源 因此处理这些资源需要使用不同的接
  • 【云原生之kubernetes】k8s集群的日常基本操作

    云原生之kubernetes k8s集群的日常基本操作 一 查看集群的状态 1 1 查看集群的节点 1 2 查看节点的详细状态 1 3 查看当前集群的pod 1 4 查看pod的详细信息 1 5 查看集群的所有pods 1 6 查看depo

随机推荐

  • 从贝叶斯方法谈到贝叶斯网络

    从贝叶斯方法谈到贝叶斯网络 0 引言 事实上 介绍贝叶斯定理 贝叶斯方法 贝叶斯推断的资料 书籍不少 比如 数理统计学简史 以及 统计决策论及贝叶斯分析 James O Berger著 等等 然介绍贝叶斯网络的中文资料则非常少 中文书籍总共
  • java设计学生类

    设计一个学生类 1 Student类中包含姓名 成绩两个属性 2分别给这两个属性定义两个方法 一个方法用于设置值 另一个方法用于获取值 3 Student类中定义一个无参的构造方法和一个接收两个参数的构造方法 两个参数分别为姓名和成绩属性赋
  • 制作Python,Raspberry Pi,电机和传感器版无线控制漫游车

    构建功能强大且可升级的个人机器人 您将学习如何控制伺服系统 响应传感器输入以及了解您的机器人在何处使用 GPS 您还将学习多种连接机器人并向其发送指令的方法 从 SSH 连接到从手机发送短信 内容 Raspberry Pi 介绍 Linux
  • 数字信息记忆-八大行星

    1 八大行星 水星 金星 地球 火星 木星 土星 天王星 海王星 2 提取关键字 水金球火木土天海 3 谐音联结 水晶 金 球喷火 烧木成土 从天落到海里
  • SQL语句基础练习(表的创建,基础查询)-提供建表语句和查询题目与解答

    说明 此基础练习的题目难度都比较简单 但是还有一些细节需要把握 此题目的主要目的是熟悉SQL语句的基础查询 关于建表方面的语句了解即可 因为一般开发中所用的都是图形化建表 SQL语句建表所用较少 虽然这些题目比较简单 但是开始中大多数都是这
  • Montery 无法接收12.1更新问题的处理

    Monterey 无法接收12 1更新问题的处理 说干货 打开App Store 搜索Monterey 点击macOS Monterey上的 查看 或者 获取 如果进度条卡住 重启系统再试
  • java zip压缩文件中文文件名乱码

    使用java util zipoutputstream发现中文名出现乱码 一直试着使用new String filename getBytes GBK ISO 8859 1 还是无效 后来查阅资料 java util zipoutputst
  • 字符串分割的几种方法

    方法一 利用STL自己实现split 函数 常用 简单 直观 原型 vector
  • 转 欢迎使用CSDN-markdown编辑器

    https blog csdn net CSDNwei article details 51836182 Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义 谨记 声明可以多次 定义只能一次 函数的声明extern关键词是可
  • java正则表达式讲解

    工具集正则表达式 http www ostools net regex w w w w w w w w email邮箱 注 本文为转载文章本文实在是不错的 参考博客 http lavasoft blog 51cto com 62575 80
  • 【Jmeter服务器资源监控ServerAgent无法连接】

    问题 通过Jmeter对接口进行压测 需要监控服务器资源 但是发现PerfMon Metrics Collector一直提示ERROR java net ConnectException Connection refused connect
  • 【工作必备技能整理】openpyxl全套教程,提升工作效率【接力pandas】

    大家早上好 本人姓吴 如果觉得文章写得还行的话也可以叫我吴老师 欢迎大家跟我一起走进数据分析的世界 一起学习 感兴趣的朋友可以关注我的数据分析专栏 里面有许多优质的文章跟大家分享哦 openpyxl在我看来 就是用代码代替我们的双手 在EX
  • CocosCreator3.8研究笔记(一)windows环境安装配置

    一 安装Cocos 编辑器 1 下载Cocos Dashboard安装文件 Cocos 官方网站Cocos Dashboard下载地址 https www cocos com creator download9 下载完成后会得到CocosD
  • Git clone fetch-pack unexpected disconnect while reading sideband packet

    在执行 git clone 命令遇到以下错误 remote Enumerating objects 1252 done remote Counting objects 100 1252 1252 done remote Compressin
  • 原来牛客网练习题还能这么做?

    笔者最新更新牛客网练习题 笔者开头感想 如今大部分高校已经开学 当然笔者也不列外 但是由于疫情的原因 笔者被迫在家上网课学习 一脸忧愁 而这恰恰给了笔者自学的机会 相信笔者会加油滴 按照时间的步伐来追寻科班的脚步 C语言练习题集册见 1 牛
  • jsonp跨域,原生js和ajax实现百度,360,必应等浏览器搜索框的智能补全提示技术,带搜索功能的搜索框

    相信许多刚学前端的的同学 都曾对浏览器搜索框自动提示提示的功能挺好奇的 接下让我们一起揭露他的神秘面纱吧 相信学过javascript的同学都引用过外部的JavaScript吧 其实跨域就是动态的创建script标签 将script标签ur
  • Dynamics 365 APP -- 清晰定义你的系统职责范围

    今天我们来看看Dynamics 365 的一个新feature APP 对的 没错是APP 各位小伙伴肯定很诧异 难道Dynamics 365又推出了新版本的APP吗 如果各位这么想的话就中了博主的招了 因为博主故意放了一个烟雾弹 今天要讲
  • Windows下把CUDA程序生成dll库并在项目中调用dll中的函数

    如何把自己写的cuda代码生成dll库 方便集成到其他主项目中去进行调用呢 这里总结了一个基本流程 操作环境 Windows10 visual studio2017 cuda10 2 opencv4 2都已经安装并配置好了 主题1 cuda
  • 西门子PLC内部的数据类型大全

    西门子PLC的数据类型种类繁多 本文进行了收集 并指明了适用范围 长度 供需要进行数据采集和分析的朋友们参考 本表格整理自博图V14 不保证更高级版本不会新增数据类型 请使用中注意 类别 数据类型 长度 位 长度 字节 S7 300 400
  • php 递归面试题_8个PHP数组面试题,php数组试题

    8个PHP数组面试题 php数组试题 网上找的PHP数组题 准备自己做一遍并且记录下来 1 写函数创建长度为10的数组 数组中的元素为递增的奇数 首项为1 复制代码 代码如下 function arrsort first length ar