PHP-自己写的代码练习-数组

1.数组

<?php
header("content-type:text/html;charset=utf-8");
//求一维数组的平均值
 /*$arr = array(2,5,6,8,9,6, );
 $len = count($arr);//数组长度
 $sum = 0;
 $a = 0;
 for($i=0;$i<$len;++$i){
     $sum += $arr[$i];
     ++$a;
}
$pingjun = $sum/$a;
echo $pingjun."<br />".$sum."<br />".$a;*/
//求二维数组的平均值
$arr2 = array(
            array(11,12, 13),
            array(21,22,23, 24, 25),
            array(31,32,33, 35),
            array(41,42,43)
            );
$len = count($arr2);
$sum = 0;
$c = 0;
for($i=0;$i<$len;++$i){
    $arr1 = $arr2[$i];//他是一维数组
    $len1 = count($arr2[$i]);
    for($k=0;$k<$len1;++$k){
        $sum+=$arr1[$k];
        ++$c;
    }
}
$zhi = $sum/$c;
echo $zhi."<br />".$sum."<br />".$c;

//求一维数组的最大值
/*$arr1 = array(1,3,5,6,9,4,11 );
$max = 1;
$pos = 0;
$len = count($arr1);
for($i=0;$i<$len;++$i){
    if($arr1[$i] > $max){
        $max = $arr1[$i];
        $pos = $i;
    }
}
echo "数组的最大值:".$max."<br />下标是:".$pos;*/
//求数组的最大值和最小值的位置交换
/*$arr1 = array(1,3,5,6,9,4,11 );
echo "<br />没交换前:";print_r($arr1);
$max = $arr1[0];
$pos1 = 0;
$min = $arr1[0];
$pos2 = 0;
$len = count($arr1);
for($i=0;$i<$len;++$i){
    if($arr1[$i]>$max){
        $max = $arr1[$i];
        $pos1 = $i;
    }
    if($arr1[$i]<$min){
        $min = $arr1[$i];
        $pos2 = $i;
    }
}
echo "<br />最大值为:".$max."下标为:".$pos1;
echo "<br />最小值为:".$min."下标为:".$pos2;
$t = $arr1[$pos1];
$arr1[$pos1] = $arr1[$pos2];
$arr1[$pos2] = $t;
echo "<br />交换后:";print_r($arr1);
*/
/*$arr1 = array(1,3,5,6,9,4,11 );
$v1 = $arr1[0];
$v2 = $arr1[6];
$t = $v1;
$v1 = $v2;
$v2 = $t;
print_r($arr1);*/
/*$arr4 = array(1=>3,'a1'=>11,3=>5,"mn"=>18,88=>2 );
$v1 = current($arr4);
$v2 = key($arr4);
echo "<br>单元的下标和值分别为:$v2,$v1";
$v3 = next($arr4);
$v4 = key($arr4);
echo "<br>现在单元的下标和值分别为:$v4,$v3";
next($arr4);
next($arr4);
next($arr4);
$v3 = current($arr4);
$v4 = key($arr4);
echo "<br>连续移动三次next后,现在单元的下标和值分别为:$v4,$v3";
next($arr4);
$v3 = current($arr4);
$v4 = key($arr4);
echo "<br>指针到最后,再移动一下,现在单元的下标和值分别为:$v4,$v3";
var_dump($v3);
var_dump($v4);
$v5 = end($arr4);
echo $v5;*/
//使用for循环和 next函数来代替foreach遍历数组
/*$arr4 = array(1=>3,'a1'=>11,3=>5,"mn"=>18,88=>2 );
$len = count($arr4);
for($i=0;$i<$len;++$i){
    echo key($arr4)."=>".current($arr4)."<br />";
    next($arr4);
}*/
/*$arr4 = array(1=>3,'a1'=>11,3=>5,"mn"=>18,88=>2 );
$result1 = each($arr4);
echo "<br />result1为:";print_r($result1);*/

/*$arr4 = array(1=>3,'a1'=>11,3=>5,"mn"=>18,88=>2 );
sort($arr4);
print_r($arr4);*/
//冒泡排序
//规律描述:
/*1,假设数组的数据有n个。
2,要进行比较的“趟数”为n-1;
3,每一趟要比较的数据个数都比前一趟少一个,第一趟要比较n个(即比较n-1次)
4,每一次比较,如果发现“左边数据”大于“右边数据”,就对这两者进行交换位置。*/
/*$arr1 = array(9,3,5,8,2,7,5);
$n = count($arr1);
for($i = 0;$i < $n-1;++$i){//这就是n-1趟
        for($k = 0;$k < $n-$i-1;++$k){//每一趟,要比较$n-$i-1次
            if( $arr1[$k] > $arr1[$k+1 ]){
                $t = $arr1[$k];
                $arr1[$k] = $arr1[$k+1];
                $arr1[$k+1] = $t;
            }
        }

}
print_r($arr1);
*/
//选择排序
//规律描述:
/*1,假设数组的数据有n个。
2,要进行查找最大值单元并进行交换的“趟数”为n-1;
3,每一趟都要求出“剩余数据”中的最大值单元,并且,剩余数据的数量每一趟都少1个,第一趟有n个。
4,每一趟找出最大值单元后,都要进行交换:最大值单元,跟剩余数据中的最后一个单元交换。*/

/*$arr1 = array(9,3,5,8,2,7,5);
$n = count($arr1);
for($i = 0; $i < $n-1; ++$i){
    $max = $arr1[0];
    $pos = 0;
    for($k = 0; $k < $n-$i; ++$k){
        if($arr1[$k]>$max){
             $max = $arr1[$k];
             $pos = $k;
        }
    }
    $t = $arr1[$pos];
    $arr1[$pos] = $arr1[$n-1-$i];//$n-1-$i就是剩余数据的最后一项的下标
    $arr1[$n-1-$i] = $t;
    //$pos = $n-1-$i;

}
print_r($arr1);*/
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值