- 3 年经验 PHP 准备面试
- 1、引用变量
- 2、unset
- 3、对象赋值采用引用方式,不会写时复制,需要使用 clone 进行复制
- 4、栗子1
- 5、单引号和双引号
- 6、数据类型
- 7、超全局数组
- 8、预定义变量
- 9、@错误控制符,==和===,++$a和$a++
- 10、栗子2
- 11、foreach 会 reset 重置指针,switch...case 有一个跳转表的概念
- 12、栗子3
- 13、include 加载警告、require 加载致命错误
- 14、正则表达式
- 15、文件
- 16、http状态码
- 17、OSI 7层
- 17、get与post区别
- 18、nginx、fastcgi、php-fpm
- 19、linux命令
- 20、mysql慢查询
&,指向一个变量的指针
unset 只会取消引用,不会销毁值
$data = ['a', 'b', 'c'];
foreach ($data as $key=>$val)
{
$val = &$data[$key];
var_dump($data);
}
var_dump($data); // [b,c,c]
- 双引号会解析变量 Heredoc
- 单引号效率更高,Nowdoc
-
整数 integer
-
浮点数 float、double 计算使用 bcmath 库,mysql 使用 decimal 字段
-
字符串 string
-
布尔 boolean
-
数组 array
-
对象 object
-
回调 callback
-
资源 resource
-
空 null 赋值 null、未定义的变量、unset 销毁的变量
- $SERVER['SERVER_ADDR']
- $SERVER['REMOTE_ADDR']
- FILE
# 运算符优先级问题,++、>、||、=
$a = 0;
$b = 0;
if ($a = 3 > 0 || $b = 3 > 0)
{
$a++;
$b++;
echo $a. "\n"; // 1
echo $b. "\n"; // 1
}
# static只会初始化一次,是局部的,会记录值
$count = 5;
function get_count()
{
static $count;
return $count++;
}
echo $count; // 5
++$count;
echo get_count(); // null
echo get_count(); // 1
# 后向引用 \\1
$str = '<b>abc</b>';
$pattern = '/<b>(.*)<\/b>/';
preg_replace(pattern, '\\1', $str);
# 贪婪模式 ?是取消贪婪
$str = '<b>abc</b><b>efg</b>';
$pattern = '/<b>.*?<\/b>/';
preg_match_all(pattern, '\\1', $str);
# 实例:139开头的手机号码
$pattern = '/^139\d{8}$/';
# 实例:取出html中img标签的所有src值
$pattern = '/<img.*?src="(.*?)".*?\/?>/i'
# 对文本开头进行写内容
function writeContent($file)
{
$handle = fopen(file, 'r');
$content = fread(handle, filesize(file));
$content = 'xxx'.$content;
fclose($handle);
$handle = fopen(file, 'w');
fwrite($handle, $content);
fclose($handle);
}
# 对目录进行遍历
function loopDir($dir)
{
$handle = opendir($dir);
while(false !== ($file = readdir($handle)))
{
if($file != '.' && $file != '..')
{
if(filetype($dir.'/'.file) == 'dir')
{
loopDir($dir.'/'.file);
}
}
}
}
- 499 客户端关闭了连接,nginx错误
- 502 bad Gateway 请求过多,比如php-fpm处理不过来,导致无法正常响应
- 504 Gateway time-out nginx超时
- 物理层
- 数据链路层
- 网络层
- 传输层 tcp、udp
- 会话层
- 表示层
- 应用层 http、ftp、dns
- get可以存浏览器书签
- get可以被缓存
- get有数据长度限制,2048字符
- get用于数据读取,幂等的
- post用于修改数据,是非幂等的
- post更安全
- get只允许ASCII字符,post无限制
nginx通过fastcgi协议与php-fpm通信
ps/top/kill/pstree
分 时 日 月 周
set profile=1;
show profiles;
show profile for query 1;
explain