首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

8 道 PHP 陣列面試題詳解:奇數陣列、等比數列、最大值索引、費波那契、差值、旋轉、合併、原地反轉

     編輯:PHP 綜合知識

題目 1:建立長度 10、首項 1 的遞增奇數陣列

function arrOdd($len=10, $first=1) {
    $arr = [];
    for ($i=0; $i<$len; $i++) $arr[] = $first + $i*2;
    return $arr;
}
print_r(arrOdd()); // [1,3,5,7,9,11,13,15,17,19]

題目 2:建立長度 10、首項 1、公比 3 的等比數列

function arrGeo($len=10, $first=1, $ratio=3) {
    $arr = [];
    for ($i=0; $i<$len; $i++) $arr[] = $first * pow($ratio, $i);
    return $arr;
}
print_r(arrGeo()); // [1,3,9,27,81,243,729,2187,6561,19683]

題目 3:求陣列最大值的索引(鍵)

function maxKey($arr) {
    $maxVal = max($arr);
    foreach ($arr as $k => $v) if ($v == $maxVal) return $k;
}
$arr = [0,-1,-2,5,'b'=>15,3];
echo maxKey($arr); // b

題目 4:費波那契數列(前 10 項)

function fibo($len) {
    $f = [0,1];
    for ($i=2; $i<$len; $i++) $f[$i] = $f[$i-1] + $f[$i-2];
    return $f;
}
print_r(fibo(10)); // [0,1,1,2,3,5,8,13,21,34]

題目 5:陣列最大值與最小值的差

function rangeDiff($arr) {
    return max($arr) - min($arr);
}
// 或排序法
function rangeDiffSort($arr) {
    sort($arr); $min = $arr[0];
    rsort($arr); $max = $arr[0];
    return $max - $min;
}
echo rangeDiff([-1,-2,100]); // 102

題目 6:陣列旋轉(後 5 移至前 5,長度>10)

function rotate5($arr) {
    $n = count($arr);
    if ($n <= 10) die('長度需>10');
    return array_merge(array_slice($arr, -5), array_slice($arr, 0, -5));
}
$arr = ['a'=>1,2,3,8,9,6,'b'=>5,-1,'c'=>8,0,7];
print_r(rotate5($arr));

題目 7:兩陣列合併三種方式差異

$a = ['a'=>1,'b'=>2,3];
$b = ['a'=>'Dee',3,5];

// array_merge:數字鍵重設,字串鍵後者覆蓋
print_r(array_merge($a,$b));

// array_merge_recursive:衝突鍵遞歸合併為陣列
print_r(array_merge_recursive($a,$b));

// 手動迴圈:保留所有鍵,數字鍵重設
$c = $a;
foreach ($b as $v) $c[] = $v;
print_r($c);

題目 8:原地反轉陣列(不建立新陣列、不用 rsort)

function reverseInPlace(&$arr) {
    $len = count($arr);
    $half = (int)($len/2);
    for ($i=0; $i<$half; $i++) {
        $j = $len - 1 - $i;
        $tmp = $arr[$i];
        $arr[$i] = $arr[$j];
        $arr[$j] = $tmp;
    }
}
$arr = ['a','b','c',1,10];
reverseInPlace($arr);
print_r($arr); // [10,1,'c','b','a']
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved