php历年面试题

更新时间:2022-12-09 19:46:00 阅读: 评论:0

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<$len;$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,起始位置,截取长度,保留索引(默认为fal))

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

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

}el{

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_rever()函数会创建新的数组,所以不能使用。

代码如下:

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

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

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

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

$len = count($arr);

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

for($i=0;$i<$half_len;$i++){

$j = $arr[$i];

//判断数组个数奇偶

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

$k = $half_len*2-$i;

}el{

//偶数

$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学习之php预定义变量

给大家介绍下php学习中经常要用到的php预定义变量,通过预定义变量可以获取用户会话、用户操作系统的环境和本地操作系统的环境等信息。

$_SERVER['SERVER_ADDR'] 当前运行脚本所在的服务器的ip地址。

$_SERVER['SERVER_NAME'] 当前运行脚本所在服务器主机的名称。

$_SERVER['REQUEST_METHOD'] 访问页面时的请求方法。

$_SERVER['REMOTE_ADDR'] 正在浏览当前页用户的ip地址。

$_SERVER['REMOTE_HOST'] 正在浏览当前页用户的主机名。

$_SERVER['REMOTE_PORT'] 用户连接到服务器时所使用的端口。

$_SERVER['SCRIPT_FILENAME'] 当前执行脚本的绝对路径。

$_SERVER['SERVER_PORT'] 服务器所使用的端口。

$_SERVER['SERVER_SIGNATURE'] 包含服务器版本和虚拟主机名的字符串。

$_SERVER['DOCUMENT_ROOT'] 当前运行脚本所在的文档根目录。

$_COOKIE 通过HTTPCookie传递到脚本的信息。这些是由执行php脚本时,通过tcookie()设置的。

$_SESSION 包含与所有会话变量有关的信息。$_SESSION变量主要应用于会话控制和页面间值的传递。

$_POST 通过post方法传递的参数信息。

$_GET 通过get方法传递的参数信息。

$_GLOBALS 由所有已定义的全局变量组成的数组。变量名就是该数组的索引。它可以称得上是所有超级变 量的超级集合。

本文发布于:2022-12-09 19:46:00,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/89/21822.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:历年   面试题   php
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图