1. 写一段代码将一个数组里不是奇数的数字过滤掉
$arr = array(1,2,3,4,5,6,7,8,9);
$res=array();
for ($i=0; $i < count($arr); $i++) {
if($arr[$i]%2!=0){
$res[]=$arr[$i];
}
}
print_r($res);
2.不计算数组的长度,使用while循环输出数组里的每一个值
$arr = array(1,2,3,4,5,6,7,8,9);
while(list($key,$value) = each($arr)){
echo "<dd>$value</dd>";
}
3.写一个对数组进行排序的函数(不可使用内置排序函数)
$res=array(23,45,21,3,4,89,11,20,10,6);
function maopao($res){
$len=count($res);
$tmp='';
for ($i=1; $i < $len; $i++) {
for ($j=0; $j < $len-$i; $j++) {
if($res[$j]>$res[$j+1]){
$tmp=$res[$j];
$res[$j]=$res[$j+1];
$res[$j+1]=$tmp;
}
}
}
return $res;
}
print_r(maopao($res));
4.写一个函数求一个数组中最大数的下标(可用内置函数)
$res=array(23,45,21,3,4,89,11,20,10,6);
echo array_search(max($res),$res);
5.写一个函数返回一个包含长度为n的斐波拉契数列(1,1,2,3,5,…,)
function feibo($n)
{
if($n<=0)
{
return 0;
}else if($n==1)
{
return 1;
}else
{
return feibo($n-1)+feibo($n-2);
}
}
for ($i=1; $i <= 10; $i++) {
echo feibo($i);
echo "<br>";
}
6.写一个函数计算一个数组中最大值和最小值的差(至少用三种方法)
1)$max=max($arr);
$min=min($arr);
echo $num=$max-$min;
2)sort($arr);
$min=$arr[0];
$max=$arr[count($arr)-1];
echo $num=$max-$min;
3)$res=array(23,45,21,3,4,89,11,20,10,6);
echo maopao($res);
function maopao($res){
$len=count($res);
$tmp='';
for ($i=1; $i < $len; $i++) {
for ($j=0; $j < $len-$i; $j++) {
if($res[$j]>$res[$j+1]){
$tmp=$res[$j];
$res[$j]=$res[$j+1];
$res[$j+1]=$tmp;
}
}
$a=$i;
}
return $res[$a]-$res[0];
}
7.写一个函数如果这个数组长度大与1,将数组的后半段移到数组的前半段
$res=array(1,2,3,4,5,6,7,8,9,10,12,23,34);
print_r(shu($res));
function shu($res){
$num=floor(count($res)/2);
$hou=array_slice($res,$num);
$qian=array_slice($res,0,$num);
$new=array_merge($hou,$qian);
return $new;
}