在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
数组的创建 1 <?php 2 //php创建数组 3 //第一种方法 4 $arr[0]=1; 5 $arr[1]=23; 6 $arr[2]=20; 7 $arr[3]=43; 8 9 for($i=0;$i<count($arr);$i++){ 10 echo '<br>'.$arr[$i]; 11 } 12 //第二种方法 13 $b=array(1,23,20,43); 14 15 for($i=0;$i<count($b);$i++){ 16 echo '<br>'.$b[$i]; 17 } 18 19 //第三种方法---自己指定下标----但是遍历数组的时候使用foreach循环 20 $c['paxster']='pax'; 21 $c['boychik']='boy'; 22 foreach($c as $val){ 23 echo $val.'<br>'; 24 } 25 foreach ($c as $key => $value) { 26 echo $key.'='.$value.'<br>'; 27 } 28 29 //js里的创建数组 30 //var arr=new Array(); 31 //var a = new Array(5); 指定长度 32 //var abb=[]; 33 ?> 数组的遍历和一些细节。 还可以通过数组运算符对多个数组进行操作,详细参看php手册。 1 <?php 2 //1. 3 $arr=array(2=>'hello',22,33); 4 //echo $arr[1];---->>报错 5 //echo $arr[3];---->>22 6 //echo $arr[5];---->>报错 7 8 //2.重新赋值--------用后定义的值覆盖即可 9 $abb=array(1=>4,32,23); 10 $abb[1]=40; 11 echo $abb[1]; 12 13 //3.布尔值作为下标 14 $acc[true]='wuhan'; 15 $acc[false]='hubei'; 16 $acc[null]='china'; 17 $acc[12.3]='earth'; 18 19 echo $acc[1].'<br>'; 20 echo $acc[0].'<br>'; 21 echo $acc[null].'<br>'; 22 echo $acc[''].'<br>'; 23 24 echo $acc[12]; 25 echo $acc[12.3]; 26 27 //打印数组的详细信息 28 print_r($acc); 29 var_dump($acc); 30 31 //4.动态改变数组 32 $add=array(2,3); 33 $add[4]=34; 34 echo $add[4];//会把两者之间空余的元素忽略,后面添加的元素追加到前面的地址上 35 36 //5.数组引用的陷阱---会把addme解析为常量,提示notice,所以把addme定义为一个字符串就不会出错 37 const addme='QQ'; 38 $e[addme]='me'; 39 echo $e[addme]; 40 41 //6.is_array----是则返回1,不是则返回空 42 $f=array(00,12); 43 echo is_array($f); 44 45 //拆分字符串explode 46 $g='1 2 3 4 5'; 47 $h='1-2-3-4-5'; 48 $gg=explode(" ",$g); 49 $hh=explode("-",$h); 50 print_r($gg); 51 print_r($hh); 52 53 //使用4种方式遍历数组 54 //for 55 $dd=array(20,30,40,50,60); 56 57 for($i=0;$i<count($dd);$i++){ 58 echo '<br/>'.$dd[$i]; 59 } 60 //while 61 $i=0; 62 while($i<count($dd)){ 63 echo '<br/>'.$dd[$i]; 64 ++$i; 65 //$i++; 66 } 67 //do..while 68 $i=0; 69 do{ 70 echo '<br/>'.$dd[$i]; 71 ++$i; 72 }while($i<count($dd)); 73 //foreach 74 foreach($dd as $key => $value){ 75 //echo $key=$value.'<br/>'; 76 echo "$key=$value<br/>"; 77 } 78 ?> 排序算法-----1.冒泡算法(去年学c的时候老师详细讲解了冒泡法,也是最简单的排序算法,计算效率相对较低) 1 //bubble sort 2 $arr=array(20,-20,0,5,-49); 3 /*$temp=0; 4 for($i=0;$i<count($arr)-1;$i++){ 5 for($j=0;$j<count($arr)-1-$i;$j++){ 6 if($arr[$j]>$arr[$j+1]){ 7 $temp=$arr[$j]; 8 $arr[$j]=$arr[$j+1]; 9 $arr[$j+1]=$temp; 10 } 11 } 12 } 13 print_r($arr);*/ 14 //封装sort函数------形参加上地址符 15 function bubbleSort(&$arr){ 16 $temp=0; 17 for($i=0;$i<count($arr)-1;$i++){ 18 for($j=0;$j<count($arr)-1-$i;$j++){ 19 if($arr[$j]>$arr[$j+1]){ 20 $temp=$arr[$j]; 21 $arr[$j]=$arr[$j+1]; 22 $arr[$j+1]=$temp; 23 } 24 } 25 } 26 } 27 bubbleSort($arr); 排序算法-----2.选择排序 1 //selectSort选择排序法 2 function selectSort(&$arr){ 3 4 for($i=0;$i<count($arr)-1;$i++){//减去自身 5 $temp=0;//中间变量 6 $min=$arr[$i];//假设最小值 7 $minIndex=$i;//对应的下标值 8 for($j=$i+1;$j<count($arr);$j++){//排好的不用再排 9 if($min>$arr[$j]){ 10 $min=$arr[$j]; 11 $minIndex=$j; 12 } 13 } 14 //交换值 15 $temp=$arr[$i]; 16 $arr[$i]=$arr[$minIndex]; 17 $arr[$minIndex]=$temp; 18 } 19 } 20 selectSort($arr); 排序算法-----3.插入排序 1 //insertSort插入排序 2 function insertSort(&$arr){ 3 for($i=1;$i<count($arr);$i++){ 4 $insertValue=$arr[$i]; 5 $insertIndex=$i-1; 6 while($insertIndex>=0&&$insertValue<$arr[$insertIndex]){ 7 $arr[$insertIndex+1]=$arr[$insertIndex]; 8 $insertIndex--; 9 } 10 $arr[$insertIndex+1]=$insertValue; 11 } 12 } 13 insertSort($arr); 14 print_r($arr); 15 var_dump($arr); 排序算法-----4.快速排序---各种语言的排序算法思想大同小异。php的快速排序算法算简单的,java更难一点。详情请点击 1 function quickSort($arr) { 2 if (count($arr) > 1) { 3 $k = $arr[0]; 4 $x = array(); 5 $y = array(); 6 $_size = count($arr); 7 for ($i=1; $i<$_size; $i++) { 8 if ($arr[$i] <= $k) { 9 $x[] = $arr[$i]; 10 } else { 11 $y[] = $arr[$i]; 12 } 13 } 14 $x = quickSort($x); 15 $y = quickSort($y); 16 return array_merge($x, array($k), $y); 17 } else { 18 return $arr; 19 } 20 } JS实现快速排序-----很好的一篇解释文章 1 var quickSort = function(arr) { 2 if (arr.length <= 1) { return arr; } 3 var pivotIndex = Math.floor(arr.length / 2); 4 var pivot = arr.splice(pivotIndex, 1)[0];//代表中位数 5 var left = []; 6 var right = []; 7 for (var i = 0; i < arr.length; i++){ 8 if (arr[i] < pivot) { 9 left.push(arr[i]); 10 } else { 11 right.push(arr[i]); 12 } 13 } 14 return quickSort(left).concat([pivot], quickSort(right)); 15 }; splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。-----splice()详细 slice()选取数组元素。返回一个新的数组,包含从 start 到 end (不包括end元素)的 arrayObject 中的元素。 concat() 方法用于连接两个或多个数组。-----concat()详细 |
2022-08-16
2022-09-04
2022-08-17
2022-08-12
2022-08-15
请发表评论