8个PHP数组面试题_PHP
网上找的PHP数组题,准备自己做一遍并且记录下来。
1.写函数创建长度为10的数组,数组中的元素为递增的奇数,首项为1.
代码如下:
function arrsort($first,$length){
$arr = array();
for($i=$first;$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
//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
$arr[$i] = $arr[$i-1]+$arr[$i-2];
}
return $arr;
}
echo "
";<br> print_r(arrFibo(10));<br> 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 "
"; <p>print_r($arr);</p> <p>echo "<br>= = = = = 拼接后 = = = = <br><br>";</p> <p>print_r(arrsort($arr));</p> <p>echo "</p>
输出:
代码如下:
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 "
";<br> print_r($arr3); <p> echo "<br> = = = = = <br><br>";</p> <p> print_r($arr4);<br> echo "</p>
输出:
代码如下:
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 "
";<br> print_r(arrsort($arr1,$arr2));<br> 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
$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 "
";<br> print_r($arr);<br> echo "
输出:
代码如下:
Array
(
[0] => 10
[1] => 1
[2] => c
[3] => b
[4] => a
)

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.
