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);*/
?>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章