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