《PHP實戰:8個PHP數組面試題》要點:
本文介紹了PHP實戰:8個PHP數組面試題,希望對您有用。如果有疑問,可以聯系我們。
網上找的PHP數組題,準備本身做一遍并且記錄下來.PHP教程
1.寫函數創立長度為10的數組,數組中的元素為遞增的奇數,首項為1.
PHP教程
??? function arrsort($first,$length){PHP教程
??????? $arr = array();
??????? for($i=$first;$i<=$length;$i++){PHP教程
??????????? $arr[] = $i*2-1;
??????? }
??????? return $arr;
??? }PHP教程
??? $arr1 = arrsort(1,10);
??? print_r($arr1);
PHP教程
輸入:
PHP教程
???? //$num為比值
???? function arrsort($first,$length,$num){PHP教程
????????? $arr= array();
????????? for($i=$first;$i<=$length;$i++){
???
??????????????? //pow($num,$i-2);返回$num的($i-2)次方
??????????????? $arr[] = $num*pow($num,$i-2);
????????? }
????????? return $arr;
??? }???????????PHP教程
??? $arr1 = arrsort(1,10,3);
??? print_r($arr1);
PHP教程
輸入:
PHP教程
3.求數組中最年夜數的下標.
PHP教程
??? $maxval = max($arr);
??? foreach($arr as $key=>$val){
???
??????? if($maxval == $val){
???????
??????????? $maxkey = $key;
??????? }
??? }
??? return $maxkey;
}PHP教程
$arr = array(0,-1,-2,5,"b"=>15,3);
echo maxkey($arr);
PHP教程
輸入:
PHP教程
( 斐波那契數列,又稱黃金分割數列,指的是這樣一個數列: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){PHP教程
??? $arr[0] = 0;
??? $arr[1] = 1;
??? for($i=2;$i<$len;$i++){
???
??????? $arr[$i] = $arr[$i-1]+$arr[$i-2];
??? }
??? return $arr;
}PHP教程
echo "<pre>";
print_r(arrFibo(10));
echo "</pre>";
PHP教程
輸入:
PHP教程
兩種辦法:PHP教程
①max/minPHP教程
輸入:
PHP教程
②sort把元素按從小到年夜排序/rsort吧元素按從年夜到小排序
PHP教程
function arrsub($arr){PHP教程
??? sort($arr);
??? $min = $arr[0];PHP教程
??? rsort($arr);
??? $max = $arr[0];PHP教程
??? $sub = $max - $min;PHP教程
??? return $sub;
}PHP教程
$arr = array(-1,-2,100);PHP教程
echo arrsub($arr);
PHP教程
輸入:PHP教程
102PHP教程
6.寫一個辦法,將一個長度超過10的數組最后5項直接截取,不改變順序變為前5項,如{1,2,3,4,5,6,7,8,9,10}變為{6,7,8,9,10,1,2,3,4,5}.PHP教程
思緒:先把數組截取相應的長度( array_slice ),再把2段數組拼接( array_merge )
PHP教程
function arrsort($arr){PHP教程
??? $num = count($arr);PHP教程
??? 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);PHP教程
??? return $arr_new;
}PHP教程
$arr = array("a"=>1,2,3,8,9,6,"b"=>5,-1,"c"=>8,0,7);PHP教程
echo "<pre>";PHP教程
print_r($arr);PHP教程
echo "<br>= = = = = 拼接后 = = = = <br><br>";PHP教程
print_r(arrsort($arr));PHP教程
echo "</pre>";
PHP教程
輸入:
PHP教程
數組不跨越10個元素,請重新輸入PHP教程
7.將兩個數組銜接成一個新數組.PHP教程
辦法①使用array_merge()函數
PHP教程
( array_merge_recursive() 函數與 array_merge() 函數 一樣,將一個或多個數組的元素的合并起來,一個數組中的值附加在前一個數組的后面.并返回作為結果的數組.PHP教程
但是,與 array_merge() 分歧的是,當有重復的鍵名時,值不會被覆蓋,而是將多個相同鍵名的值遞歸組成一個數組.)
PHP教程
??? $arr = array("a"=>1,"b"=>2,3);
??? $arr2 = array("a"=>Dee,3,5);
???
??? $arr3 = array_merge($arr,$arr2);
??? $arr4 = array_merge_recursive($arr,$arr2);PHP教程
??? echo "<pre>";
??? print_r($arr3);PHP教程
??? echo "<br> = = = = = <br><br>";PHP教程
??? print_r($arr4);
??? echo "</pre>";
PHP教程
輸入:
PHP教程
??? [b] => 2
??? [0] => 3
??? [1] => 3
??? [2] => 5
)
PHP教程
第一個輸出的數組中索引為"a"的值1被索引被第二個數組中索引為"a"的值Dee籠罩了.PHP教程
辦法③
PHP教程
function arrsort($arr1,$arr2){PHP教程
??? $arr_new = $arr1;
???
??? foreach($arr2 as $key=>$val){???
???
??????????? $arr_new[] = $val;
??? }PHP教程
??? return $arr_new;
}PHP教程
$arr1 = array("a"=>1,"b"=>2,3);
$arr2 = array("a"=>Dee,"c"=>3,5);PHP教程
echo "<pre>";
print_r(arrsort($arr1,$arr2));
echo "</pre>";
PHP教程
輸入:
PHP教程
8.數組逆序( 不能使用rsort函數,不能生成新數組 )PHP教程
使用array_reverse()函數會創建新的數組,所以不克不及使用.
PHP教程
$arr = array("a","b","c",1,10);
$i = "";//要替換地位的數的下標
$j = "";//臨時變量
$k = "";//被替換地位的數的下標PHP教程
$len = count($arr);
$half_len = floor($len/2);//向下取整,取整的值是輪回的次數PHP教程
for($i=0;$i<$half_len;$i++){PHP教程
??? $j = $arr[$i];
???
??? //斷定數組個數奇偶
??? if($len%2!=0){ //奇數
???
??????? $k = $half_len*2-$i;
??? }else{
???????
??????? //偶數
??????? $k = $half_len*2-$i-1;
??? }PHP教程
??? $arr[$i] = $arr[$k];
??? $arr[$k] = $j;
}PHP教程
echo "<pre>";
print_r($arr);
echo "</pre>";
PHP教程
歡迎參與《PHP實戰:8個PHP數組面試題》討論,分享您的想法,維易PHP學院為您提供專業教程。