微信扫一扫打赏支持

php数组插入数据

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关键词

 

posted @ 2018-04-30 10:56  范仁义  阅读(659)  评论(0编辑  收藏  举报