php数组插入数据
一、总结
代码要多敲,看是看不会的
php代码直接在页面不好敲,可以去控制器里面敲
二、目标
在一组数中,要求插入一个数,按其原来顺序插入,维护原来排序方式。
三、代码
(1)、思路:找到比要插入数大的那个位置,替换,然后把后面的数后移一位。
1 <?php 2 $in = 2; 3 $arr = array(1,1,1,3,5,7); 4 $n = count($arr); 5 //如果要插入的数已经最大,直接打印 6 if($arr[$n-1] < $in) { 7 $arr[$n+1] = $in; print_r($arr); 8 } 9 for($i=0; $i<$n; $i++) { 10 //找出要插入的位置 11 if($arr[$i] >= $in){ 12 $t1= $arr[$i]; 13 $arr[$i] = $in; 14 //把后面的数据后移一位 15 for($j=$i+1; $j<$n+1; $j++) { 16 $t2 = $arr[$j]; 17 $arr[$j] = $t1; 18 $t1 = $t2; 19 } 20 //打印 21 print_r($arr); 22 die; 23 } 24 }
1、print_r打印数组
(2)、
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>PHP Exercise</title> 6 </head> 7 <body> 8 <div>这是杨辉三角</div> 9 <?php 10 $in=2; 11 $arr=array(1,1,1,3,5,7); 12 //1、将数组排序 13 sort($arr); 14 //2、二分查找在数组中找到要插入的位置 15 $len=count($arr); 16 $h=0; 17 $t=$len-1; 18 $in_pos=-1; 19 while($h<=$t){ 20 $ave=intval(($h+$t)/2); 21 if($ave==$in){ 22 $in_pos=$ave; 23 break; 24 }else if($ave>$in){ 25 $t=$ave-1; 26 }else{ 27 $h=$ave+1; 28 } 29 } 30 dump($in_pos); 31 //3、插入元素后面的数据依次后移,在数组中插入元素 32 ?> 33 </body> 34 </html>
1、sort()排序
2、count()函数计算元素数目
3、intval对浮点数取整
4、第22行,函数内可以直接用函数外的变量
5、php也支持break关键词
6、原生php也支持dump关键词