PHP(2)

1、时间

配置时间php.ini
date.timezone=PRC
time()
获取1970-1-1到今天的秒数
data("Y-m-d H:i".time())
显示格式如  2008-12-01   12:01
格式化时间戳
strtotime("2021-10-20")
通过字符串转化为时间戳

2、http全局数组

$_GET[]
获取所有get请求参数
$_PSOT[]
获取所有post请求参数
$_REQUEST[]
获取所有请求参数

3、jsonp方法

json_encode()
数组转jsonp
json_decode()
字符串转数组

4、header方法

 header("content-tyre: application/json");
返回json格式
header('content-tyre:text/html;charset=utf-8');
返回html格式指定  编码

5、session

session是用来保持客户端与服务器端会话de
session的值存储在服务器
session是通过cookie来传递给客户端

6、cookie

存储在客户端的数据,可以设置过期时间
服务器或者客户端都可以修改设置cookie
每次http请求都会携带cookie
http响应也会携带cookie

7、MySQL存储引擎中MyISAM和InnoDB,优缺点,索引?

MyISAM 优:成熟、稳定、易于管理;表格锁定机制;比innoDB快;缺:optimize清理空间;适合:读取需求、节约空间时间、响应速度快;

InnoDB优:数据库支持外键和事务处理,缺:速度比MyISAM稍慢;占用空间大;适合:用到事务、外键和更高安全性的需求;多用户同时修改表;

创建索引:alert table tablename add index (`字段名`)

8、什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么?

索引:通过在表字段中建立索引可提高查询优化,确保数据的唯一性,以及可以对全文索引字段中的大量文本的搜索进行优化。

主键索引(primary key):主要作用是确定数据表里一条特定的数据记录的位置。数据表会根据主键的唯一索引性来唯一标示每条记录

唯一索引(unique)主要是为了避免数据出现重复(4)区别:每个表中只能有一个主键索引,但可以有多个唯一索引。

(优点):创建索引可以大大提高系统的性能:

保证数据库表中每一行唯一性.

加快数据检索速度,最主要的原因。

加速表和表之间连接

在使用分组和排序 子句进行数据检索时,显著减少查询中分组和排序时间。

查询使用优化隐藏器,提高系统性能。

 增加索引也有许多不利的方面:

创建和维护索引要耗费时间,随着数据量的增加而增加。

占物理空间,除了数据表占数据空间之外,索引还要占一定的物理空间,如果要建立聚簇索引,空间就会更大。

当对表数据进行增删改时,索引也要动态维护,降低数据维护速度。

在哪建索引?

经常需要搜索的列,加快搜索的速度;

主键列,强制该列唯一性和组织表中数据排列结构

经常连接列(外键)加快连接速度

范围搜索列,因索引已排序,范围是连续

排序列,因索引已排序,可利用索引排序加快时间;

WHERE子句列,加快条件判断。

9、关于中文截取的问题

1.mb_substr($str, $start, $length, $charset);

2.iconv_substr();(PHP 4 >= 4.0.6, PHP 5)

结合Join 、array_slice和 正则

10、PHP经典算法题

1、有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了。没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的那一个扔给了猴,偷走了1/5。第二天,大家分赃,也是分成5份多一个扔给猴了。最后一人分了一份。问:共有多少苹果?

for ($i = 1; ; $i++)
{
    if ($i%5 == 1) {
        //第一个人取五分之一,还剩$t
        $t = $i - round($i/5) - 1;      
        if($t % 5 == 1)
        {
            //第二个人取五分之一,还剩$r
            $r = $t - round($t/5) - 1;      
            if($r % 5 == 1)
            {
                //第三个人取五分之一,还剩$s
                $s = $r - round($r/5) - 1;              
                if($s % 5 == 1)
                {
                    //第四个人取五分之一,还剩$x
                    $x = $s - round($s/5) - 1;                  
                    if($x % 5 == 1)
                    {
                        //第五个人取五分之一,还剩$y
                        $y = $x - round($x/5) - 1;                      
                        if ($y % 5 == 1) {
                            echo $i;
                            break;
                        }
                    }
                }
            }
        }
    }
}

2、一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

function king($n, $m){
    $monkeys = range(1, $n);
    $i=0;
    $k=$n;
    while (count($monkeys)>1) {
        if(($i+1)%$m==0) {
            unset($monkeys[$i]);
        } else {
            array_push($monkeys,$monkeys[$i]);
            unset($monkeys[$i]);
        }
        $i++;
    }
    return current($monkeys);
}
 
$a = king(5, 2);
var_dump($a);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值