ホームページ  >  記事  >  バックエンド開発  >  8 PHP 配列面接の質問、PHP 配列テストの質問_PHP チュートリアル

8 PHP 配列面接の質問、PHP 配列テストの質問_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:48:421284ブラウズ

8つのPHP配列面接の質問、PHP配列テストの質問

オンラインで見つけたPHP配列の質問、自分で答えて記録する準備をしてください。

1. 長さ 10 の配列を作成する関数を作成します。配列内の要素は奇数で増加し、最初の項目は 1 です。
コードをコピーします コードは次のとおりです:
関数 arrsort($first,$length){

$arr = array();

for($i=$first;$i<=$length;$i++){


$arr[] = $i*2-1;

}

戻り $arr;
}

$arr1 = arrsort(1,10);

Print_r($arr1);



出力:


コードをコピーします コードは次のとおりです: 配列 ( [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 は比率です
関数 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);
}
$arr;
を返す                                                                          
$arr1 = arrsort(1,10,3);
Print_r($arr1);

出力:

コードをコピーします


コードは次のとおりです: 配列 ( [0] => 1 [1] => 3 [2] => 9 [3] => 27 [4] => 81 [5] => 243 [6] => 729 [7] => 2187 [8] => 6561 [9] => 19683 3. 配列内の最大の数値の添え字を見つけます。

コードをコピーします コードは次のとおりです:
関数 maxkey($arr){ $maxval = max($arr); foreach($arr as $key=>$val){
If($maxval == $val){

                                   $maxkey = $key;

}
}
$maxkey を返します;
}

$arr = 配列(0,-1,-2,5,"b"=>15,3);
echo maxkey($arr);


出力:


コードをコピーします

コードは次のとおりです:


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)

コードをコピーします

コードは次のとおりです:

関数 arrFibo($len){ $arr[0] = 0; $arr[1] = 1;
for($i=2;$i<$len;$i++){

$arr[$i] = $arr[$i-1]+$arr[$i-2];

}

$arr;
を返します }

エコー「

」;<br>
print_r(arrFibo(10));<br>
echo "
";

出力:



コードをコピーします

コードは次のとおりです:

配列
( [0] => 0 [1] => 1 [2] => 1 [3] => 2
[4] => 3
[5] => 5
[6] => 8
[7] => 13
[8] => 21
[9] => 34
)


5. 配列内の最大の数値と最小の数値の差を計算します。


2つの方法:

①最大/最小

出力:

コードをコピーします

コードは次のとおりです:

102

②sortは要素を小さいものから大きいものに並べ替えます/rsortは要素を大きいものから小さいものに並べ替えます
コードをコピーします コードは次のとおりです:

関数 arrsub($arr){

ソート($arr);
$min = $arr[0];

rsort($arr);
$max = $arr[0];

$sub = $max - $min;

$sub を返します;
}

$arr = 配列(-1,-2,100);

エコー 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)
コードをコピーします コードは次のとおりです:

関数 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);
}その他{

echo "配列の要素が 10 個を超えていないので、再入力してください";
exit();
}

//スプライシング
$arr_new = array_merge($arr_lastpart,$arr_firstpart);

$arr_new を返す;
}

$arr = array("a"=>1,2,3,8,9,6,"b"=>5,-1,"c"=>8,0,7);

エコー「

」;</p>
<p>print_r($arr);</p>
<p>echo "<br>= = = = = スプライシング後 = = = = <br><br>";</p>
<p>print_r(arrsort($arr));</p>
<p>エコー "
";

出力:
コードをコピーします コードは次のとおりです:
配列
(
[a] => 1
[0] => 2
[1] => 3
[2] => 8
[3] =>9
[4] => 6
[b] => 5
[5] => -1
[c] => 8
[6] => 0
[7] => 7
)

= = = = = スプライス後 = = = =
コードをコピーします コードは次のとおりです:
配列
(
[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);

出力:
コードをコピーします コードは次のとおりです:
配列
(
[a] => 1
[0] => 2
[1] => 3
)

= = = = = スプライス後 = = = =

配列は 10 要素を超えていないため、再入力してください

7. 2 つの配列を新しい配列に連結します。

方法① array_merge()関数を使う


コードをコピーします コードは次のとおりです: array_merge($arr1,$arr2);

方法② array_merge_recursive()関数を使って配列を再帰的に追加する
( array_merge_recursive() 関数は array_merge() 関数と同じです。 1 つ以上の配列の要素をマージします。 1 つの配列の値は前の配列に追加されます。 そして、結果の配列を返します。

ただし、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);

エコー "

";</span></p>
Print_r($arr3);<p>
<br> echo "<br> = = = = = <br><br>";</p>
<p> print_r($arr4);<br>
echo "
";

出力:
コードをコピーします コードは次のとおりです:
配列
(
[a] =>ディー
[b] => 2
[0] => 3
[1] => 3
[2] => 5
)

= = = = =
コードをコピーします コードは次のとおりです:
配列
(
[a] => 配列
(
[0] => 1
[1] => )

[b] => 2

[0] => 3
[1] => 3
[2] => 5
)

最初の出力配列のインデックス "a" の値 1 は、2 番目の配列のインデックス "a" の値 Dee によってインデックス付けされます。

方法③
コードをコピーします コードは次のとおりです:

関数 arrsort($arr1,$arr2){

$arr_new = $arr1;


foreach($arr2 as $key=>$val){

$arr_new[] = $val;
}

$arr_new を返す;

}

$arr1 = array("a"=>1,"b"=>2,3);

$arr2 = array("a"=>Dee,"c"=>3,5);

エコー「
」;<p>
print_r(arrsort($arr1,$arr2));<br>
echo "
";

出力:


コードをコピーします コードは次のとおりです: 配列
(
[a] => 1
[b] => 2
[0] => 3
[1] =>ディー
[2] => 3
[3] => 5
)

それがインデックス配列であり、重複したインデックスがある場合、2 番目の配列内の重複したインデックスは新しいインデックスに変更されます。

8. 配列の逆順(rsort関数は使用できず、新しい配列は生成できません)

array_reverse()関数を使用すると新しい配列が作成されるため使用できません。


コードをコピーします コードは次のとおりです:

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

$i = "";//置換される数字の添字
$j = "";//一時変数
$k = "";//置換される数字の添え字

$len = count($arr);

$half_len = Floor($len/2);//切り捨て、四捨五入した値がループ回数になります

for($i=0;$i

$j = $arr[$i];


//配列の奇数か偶数を決定します
If($len%2!=0){ //奇数

$k = $half_len*2-$i;
}その他{
                                   //偶数
$k = $half_len*2-$i-1;
}

$arr[$i] = $arr[$k];

$arr[$k] = $j;

}

エコー「

」;</p>
print_r($arr);<p>
echo "
";

出力:


コードをコピーします コードは次のとおりです: 配列 (
[0] => 10
[1] => 1
[2] => [3] => [4] => )





http://www.bkjia.com/PHPjc/1021095.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/1021095.html技術記事 8 PHP 配列の面接の質問、PHP 配列のテストの質問をオンラインで見つけて、自分で行う準備をして記録します。 1. 長さ 10 の配列を作成する関数を作成します。配列内の要素は奇数に増加しています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。