1.echo,print,print_r的区别
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print() 只能打印出简单类型变量的值(如int,string)
print_r() 可以打印出复杂类型变量的值(如数组,对象)
echo 输出一个或者多个字符串
总结:
PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。
$r = print "Hello World";
这意味着print可用在一些复杂的表达式中,而echo则不行。但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句。
echo 没有返回值;print 有返回值,print 的返回值总是1。
php 各种输出的对比:https://www.cnblogs.com/answer727/p/10012229.html
2.include 与require的区别
require() 语句的性能与 include() 相类似,都是包括并运行指定文件。不同之处在于:对 include() 语句来说,在执行文件时每次都要进行读取和评估;而对于 require() 来说,文件只处理一次(实际上,文件内容替换 require() 语句)。这就意味着如果可能执行多次的代码,则使用 require() 效率比较高。另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用 include() 语句。
require() 的使用方法如:
require("myfile.php")
这个语句通常放在 PHP 脚本程序的最前面。PHP 程序在执行前,就会先读入 require() 语句所引入的文件,使它变成 PHP 脚本文件的一部分。
include() 使用方法和 require 一样如:
include("myfile.php")
这个语句一般是放在流程控制的处理区段中。
PHP 脚本文件在读到 include() 语句时,才将它包含的文件读取进来。这种方式,可以把程式执行时的流程简单化。
- incluce 在用到时加载
- require 在一开始就加载
- _once 后缀表示已加载的不加载
include 引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。
require 引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。
3.cookie和session
https://www.cnblogs.com/ganwenjun/p/6914887.html
4.php的面向对象
https://www.jianshu.com/p/d3edc23718fc
5.php常见函数
https://www.cnblogs.com/qczy/p/11074796.html
6.单引号和双引号的区别
①转义的字符不同
单引号和双引号中都可以使用转义字符(\),但只能转义在单引号中引起来的单引号和转义转义符本身。如果用双引号(“”)括起字符串,PHP懂得更多特殊字符串的转义序列
②对变量的解析不同
单引号字符串中出现的变量不会被变量值替代。即PHP不会解析单引号中的变量,而是将变量名原样输出。双引号字符串最重要的一点是其中的变量名会被变量值替代,即可以解析双引号中包含的变量。
③解析速度不同
单引号不需要考虑变量的解析,速度比双引号快.推荐用单引号.有的时候双引号也比较好用,比如在拼凑sql 语句
7.比较好的面试题:https://www.cnblogs.com/gaowei521/p/10755237.html
8.YII https://www.cnblogs.com/wudanyang/p/11567954.html
9.对象的传递:https://blog.csdn.net/wozhangyi/article/details/105761099
一个对象变量并不是保存整个对象的值,而是保存一个对象标识符来访问真正的对象内容,因此,当对象作为参数传递,作为结果返回,或者赋值给另外一个变量,另外一个变量跟原来的不是引用的关系,只是他们都保存着同一个标识符的拷贝,这个标识符指向同一个对象的真正内容
10.var_dump https://www.cnblogs.com/banml/p/13215505.html
var_dump() 函数用于输出变量的相关信息。
var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
11.数据库的优化:https://www.cnblogs.com/liliuguang/p/11015964.html
1),数据表中的数据类型的优化 如选择合适的字段,选择效率快速的字段
2),索引优化
3)、SQL语句的优化
(1)优化查询过程中的数据访问如使用limit、使用返回列不用*
(2)优化长难句的查询语句 变复杂为简单、切分查询、分解关联查询
(3)优化特定类型的查询语句如优化count()、优化关联查询、优化子查询、优化Group by、优化li'mit
4)、存储引擎的优化
(1)尽量使用InnoDB存储引擎,因为它支持事务、外键、使用独立表空间、使用的是行级锁、
5)、数据表结构的设计优化
(1)分区操作 如通过特定的策略对数据进行物理拆分、对用户透明的、partition by
(2)分库分表 如水平拆分(以行级进行拆分)、垂直拆分(列及拆分)
6)、数据架构的优化
(1)主从复制
(2)读写分离
(3)双主热备
(4)负载均衡 通过LVS的三种模式实现的、Mycat数据库中间件实现的