使用for和next遍历数组 注意:对PHP数组,往往不能单纯使用for循环进行遍历 或者说:PHP中,使用for循环只能循环“下标为连续的纯整数数组”; // 使用for循环和next()函数,遍历以下数组(输出其下标和对应值) $arr4 = array(1=>3, ‘a1’ => 11, 3=>5, ‘mn’=>18, 88=>2 ); $len = count($arr4); //取得数组的长度 for($i=0;$I<$len;++$i){ $key =key($arr4); //取得当前项的键 $value = current($arr4); //取得当前项的值 echo “<br />$key=$value”; next($arr4); ////对当前项的数据处理完毕,将指针后移一位 } 结果: 1=》3 a1=》11 3=》5 mn=》18 88=》2 While_each_list()的使用 数组变量里的一些细节Foreach也是正常的循环语法结构,可以有break和continue等操作。 遍历过程中值变量默认的传值方式是值传递。 //演示foreach值变量的值传递含义: //演示过程中值变量默认的传值方式是值传递。 $arr4 = array(1=>3, ‘a1’ => 11, 3=>5, ‘mn’=>18, 88=>2 ); Foreach($arr4 as $key => $value){ $value =$value *2; Echo “<br />$key : $value”; } //虽然foreach中,改变了value的值,但是数组本身是没变的: Echo “<br />结果为:”;print_r($arr4); 结果为: 1 : 3 a1 : 11 3 : 5 mn : 18 88 : 2 //演示foreach值变量的引用传递含义: //演示过程中值变量默认的传值方式是引用传递。 $arr4 = array(1=>3, ‘a1’ => 11, 3=>5, ‘mn’=>18, 88=>2 ); Foreach($arr4 as $key => & $value){ //比上面多了一个$符号
$value =$value *2;
Echo “<br />$key : $value”; } //虽然foreach中,改变了value的值,但是数组本身改变了: Echo “<br />结果为:”;print_r($arr4); 结果为: 1 : 6 a1 : 22 3 : 10 mn : 36 88 : 4 Foreach默认是原数组上进行遍历。但如果在遍历过程中对数组进行了某种修改或某种指针性操作,则会复制数组后在复制的数组上继续遍历循环(原数组保持不变)。
数组排序算法//演示sort()排序 $arr1= array(1=>3, ‘a1’ => 11, 3=>5, ‘mn’=>18, 88=>2 ); Echo “<br />排序前:”print_r($arr1); Sort($arr1); Echo “<br />排序后:”print_r($arr1); 结果为: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps4BC2.tmp.jpg //演示sort()排序 $arr2= array(1=>3, ‘a1’ => 11, 3=>5, ‘mn’=>18, 88=>2 ); Echo “<br />排序前:”print_r($arr2); asort($arr2); Echo “<br />排序后:”print_r($arr2); 结果为: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps4BC3.tmp.jpg 更多排序:
冒泡排序算法演示数组为: $a=array(9, 3, 2, 5, 8, 7); //下标为0,1,2,3,4,5 演算过程描述: 从数组的左边开始,开始两两比较响铃的两个数据的大小,把大的数据放在右边,这样进行一趟后,必然可以确定最大的一个数据放在右边 按此方式,对剩余的数据进行下一趟,则会确定这些剩余数据的最大值放在剩余位置的最右边 演示: 规律描述: 1.假设数组的数据有n个; 2.要进行比较的趟数为n-1次 3.每一趟要比较的数据都要比前一趟少一次,第一趟要比较n个数据,即n-1次 4.每一次比较,如果发现“左边数据”大于“右边数据”,这两者就要交换位置 $n = count($a); //个数 For($i=0;$i<$n-1;++$i){ For($j=0;$j<$n-$i-1;++$j){ If($a[$k]>$a[$k+1]){ $t=$a[$k]; $a[$k]=$a[$k+1]; $a[$k+1]=$t; } } } 选择排序演示数组为: $a=array(9, 3, 2, 5, 8, 7); //下标为0,1,2,3,4,5 演算过程描述: 求得一个数组的最大值下标,并将这个最大值下标的单元跟最后一个单元进行交换; 然后,继续从生育数据中取得最大值下标,并经这个最大值下标的单元跟生育的最后一个单元格交换 演示: 规律描述: 1.假设数组的数据有n个; 2.要进行查找最大值单元并进行交换的的趟数为n-1 3.每一趟要求出剩余数据中的最大单元值,并且,剩余数据的数量每一趟都少1个,第一趟有n个 4.每一找出最大值后,都要进行交换:最大值单元,跟剩余数据中的最后一个单元格交换 $n = count($a); //个数 for($i=0;$i<$n;++$i){ $max=$a[0]; //找最大值先要取得第一项 $pos=0; //取得第一项的下标 for($k=0;$k<$n-$i;++$k){ If($a[$k]>$max){ $max=$a[$k]; $pos=$k; } $t=$a[$pos]; $a[$pos]=$a[$n-$i-1]; $a[$n-$i-1]=$t; } }
|