ホームページ >バックエンド開発 >PHPチュートリアル >8 PHP 配列面接の質問、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);
出力:
コードをコピーします コードは次のとおりです:
配列 ( [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 を返します;
}
$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); rsort($arr); $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){ $arr_new を返す; $arr = array("a"=>1,2,3,8,9,6,"b"=>5,-1,"c"=>8,0,7); エコー「
コードをコピーします コードは次のとおりです:
$min = $arr[0];
$max = $arr[0];
}
コードをコピーします コードは次のとおりです:
//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);
}」;</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);
$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] =>
)
[0] => 3
[1] => 3
[2] => 5
)
方法③
コードをコピーします コードは次のとおりです:
$arr_new = $arr1;
foreach($arr2 as $key=>$val){
$arr_new[] = $val;
}
}
$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()関数を使用すると新しい配列が作成されるため使用できません。
コードをコピーします コードは次のとおりです:
$i = "";//置換される数字の添字
$j = "";//一時変数
$k = "";//置換される数字の添え字
$half_len = Floor($len/2);//切り捨て、四捨五入した値がループ回数になります
//配列の奇数か偶数を決定します
If($len%2!=0){ //奇数
$k = $half_len*2-$i;
}その他{
//偶数
$k = $half_len*2-$i-1;
}
$arr[$i] = $arr[$k];
}
エコー「
」;</p> print_r($arr);<p> echo "";