程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 8個PHP數組面試題

8個PHP數組面試題

編輯:關於PHP編程

       這篇文章主要介紹了8個PHP數組面試題,例如寫函數創建長度為10的數組,數組中的元素為遞增的奇數,首項為1、創建長度為10的數組,數組中的數為遞增的等比數,比值為3,首項為等題目,需要的朋友可以參考下

      網上找的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,起始位置,截取長度,保留索引(默認為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<$half_len;$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

      )

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved