8个PHP数组面试题

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

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

复制代码 代码如下:


<?php

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.

复制代码 代码如下:


<?php

//$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。)

复制代码 代码如下:


<?php

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 "<pre>";
print_r(arrFibo(10));
echo "</pre>";

输出:

复制代码 代码如下:


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吧元素按从大到小排序

复制代码 代码如下:


<?php

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 )

复制代码 代码如下:


<?php

function arrsort($arr){

$num = count($arr);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/8b30ffcd47f18717be4b2e841bb6b864.html