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);