1、请选择以下代码运行的结果: <?php if ('1e3' == '1000') echo 'LOL'; ?> 答案: (B)
A 无任何输出结果 B LOL C 不执行且报错
2、请选出以下代码运行的结果: <?php $a = "aabbzz"; $a++; echo $a; ?> 答案: (C)
A b B aabbzz C aabcaa
3,写出一下程序的输出结果:<?php 答案: (C)
$data = ['a','b','c'];
foreach($data as $k=>$v){
$v = &$data[$k];
}
A $data = ['a','b','c']; B $data = ['b','b','c']; C $data = ['b','c','c'];
4. 下面的代码,分别在php5.5及以下 和php5.5以上 可以执行吗,
$arr = [1,23,4,7,8]; 答案:(不能在php5.5执行)
5.常用的数组函数和字符串函数
数组函数:
array --? 声明一个数组
count -- 计算数组中的单元数目或对象中的属性个数
array_push()将一个或多个元素插入数组的末尾(入栈)
array_column()返回输入数组中某个单一列的值;
array_combine()通过合并两个数组来创建一个新数组;
array_reverse()以相反的顺序返回数组
array_unique()删除数组中的重复值;
in_array()检查数组中是否存在指定的值
foreach -- 遍历数组
list -- 遍历数组
explode -- 将字符串转成数组
implode -- 将数组转成一个新字符串
array_merge -- 合并一个或多个数组
is_array -- 检查是否是数组
print_r -- 输出数组
sort -- 数组排序
array_keys -- 返回数组中所有的键名
array_values -- 返回数组中所有的值
key -- 从关联数组中取得键名
字符串函数:
trim()移除字符串两侧的空白字符和其他字符;
substr_replace()把字符串的一部分替换为另一个字符串;
substr_count()计算子串在字符串中出现的次数;
substr()返回字符串的一部分;
strtolower()把字符串转换为小写字母;
strtoupper()把字符串转换为大写字母;
strtr()转换字符串中特定的字符;
strrchr()查找字符串在另一个字符串中最后一次出现;
strstr()查找字符串在另一字符串中的第一次出现(对大小写敏感);
strrev()反转字符串;
strlen()返回字符串的长度;
str_replace()替换字符串中的一些字符(对大小写敏感);
print()输出一个或多个字符串;
explode()把字符串打散为数组;
is_string()检测变量是否是字符串;
strip_tags()从一个字符串中去除HTML标签;
mb_substr()用来截中文与英文的函数
6 .写出一些php魔术方法。
__construct() 实例化类时自动调用。
__destruct() 类对象使用结束时自动调用。
__set() 在给未定义的属性赋值的时候调用。
__get() 调用未定义的属性时候调用。
__isset() 使用isset()或empty()函数时候会调用。
__unset() 使用unset()时候会调用。
__sleep() 使用serialize序列化时候调用。
__wakeup() 使用unserialize反序列化的时候调用。
__call() 调用一个不存在的方法的时候调用。
__callStatic()调用一个不存在的静态方法是调用。
__toString() 把对象转换成字符串的时候会调用。比如 echo。
__invoke() 当尝试把对象当方法调用时调用。
__set_state() 当使用var_export()函数时候调用。接受一个数组参数。
__clone() 当使用clone复制一个对象时候调用。
7.冒泡排序实现
for ($i = 0; $i < count($a) ; $i++) {
for ($j = $i+1; $j < count($a); $j++) {
if ($a[$i] > $a[$j]) {
$tem = $a[$i];
$a[$i] = $a[$j]; /
$a[$j] = $tem;
}
}
}
8.mysql Mysql的两种存储引擎 MyISAM 和Innodb区别
1、MyISAM:
①不支持事务,但是整个操作是原子性的(事务具备四种特性:原子性、一致性、隔离性、持久性)
②不支持外键,支持表锁,每次所住的是整张表
MyISAM的表锁有读锁和写锁(两个锁都是表级别):
表共享读锁和表独占写锁。在对MyISAM表进行读操作时,不会阻塞其他用户对同一张表的读请求,但是会阻塞其他用户对表的写请求;对其进行写操作时会阻塞对同一表读操作和写操作
MyISAM存储引擎的读锁和写锁是互斥的,读写操作是串行的。那么,一个进程请求某个MyISAM表的读锁,同时另一个进程也请求同一表的写锁,MySQL如何处理呢?答案是写进程先获得锁。不仅如此,即使读请求先到锁等待队列,写请求后到,写锁也会插到读锁请求之前!这是因为MySQL认为写请求一般比读请求要重要。这也正是MyISAM表不太适合于有大量更新操作和查询操作应用的原因,因为,大量的更新操作会造成查询操作很难获得读锁,从而可能永远阻塞。这种情况有时可能会变得非常糟糕!
③一个MyISAM表有三个文件:索引文件,表结构文件,数据文件
④存储表的总行数,执行select count(*) from table时只要简单的读出保存好的行数即可
(myisam存储引擎的表,count(*)速度快的也仅仅是不带where条件的count。这个想想容易理解的,因为你带了where限制条件,原来所以中缓存的表总数能够直接返回用吗?不能用。这个查询引擎也是需要根据where条件去表中扫描数据,进行统计返回的。)
⑤采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。
⑥支持全文索引和空间索引
⑦对于AUTO_INCREMENT类型的字段,在MyISAM表中,可以和其他字段一起建立联合索引。
2、Innodb:
①支持事务,支持事务的四种隔离级别;是一种具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
②支持行锁和外键约束,因此可以支持写并发
③不存储总行数;也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
④对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引
⑤DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除
⑥一个Innodb表存储在一个文件内(共享表空间,表大小不受操作系统的限制),也可能为多个(设置为独立表空间,表大小受操作系统限制,大小为2G),受操作系统文件大小的限制
⑦主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问主键索引;最好使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。
10 mysql 那种情况下适合建立索引,哪些情况下不适合
哪些情况需要创建索引
主键自动建立唯一索引
频繁作为查询条件的字段应该创建索引
查询与其它表关联的字段,外键关系建立索引(多表关联查询)
单键、组合索引的选择问题,组合索引性价比更高(mysql自动选择最优)
查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
查询中统计或者分组字段((分组order by )包含(排序group by))
哪些情况不要创建索引
表记录太少
经常增删改的表或者字段(例如电商项目的用户余额)
Where条件里用不到的字段不创建索引
过滤性不好的不适合建索引(手机号、身份证号之类过滤性好)
?
11, http常见的状态码
100:这个状态码是告诉客户端应该继续发送请求,这个临时响应是用来通知客户端的,部分的请求服务器已经接受,但是客户端应继续发送求请求的剩余部分,如果请求已经完成,就忽略这个响应,而且服务器会在请求完成后向客户发送一个最终的结果
2XX(成功)
200:这个是最常见的http状态码,表示服务器已经成功接受请求,并将返回客户端所请求的最终结果
202:表示服务器已经接受了请求,但是还没有处理,而且这个请求最终会不会处理还不确定
204:服务器成功处理了请求,但没有返回任何实体内容 ,可能会返回新的头部元信息
3XX(重定向)
301:(永久性重定向) 客户端请求的网页已经永久移动到新的位置,当链接发生变化时,返回301代码告诉客户端链接的变化,客户端保存新的链接,并向新的链接发出请求,已返回请求结果
302 Move temporarily:暂时性重定向
304 Not Modified : 从本地缓存读取
4XX:客户端错误
400 Bad Request:表示请求报文中存在语法错误;
401 Unauthorized:未经许可,需要通过HTTP认证;
404:请求失败,客户端请求的资源没有找到或者是不存在
5XX 服务端错误
500:服务器遇到未知的错误,导致无法完成客户端当前的请求。
503:服务器由于临时的服务器过载或者是维护,无法解决当前的请求,以上http状态码是服务器经常返回的状态代码,用户只能通过浏览器的状态了解服务器是否正常运行,一般除了错误的状态码