PHP基础语法与常识
表单中 GET 与 POST 提交方法的区别是什么?
GET通过 URL 参数传递数据。POST通过请求体传递数据。GET更适合查询类请求。POST更适合提交较大或敏感数据。
如何用 PHP 打印前一天的时间?
echo date('Y-m-d H:i:s', strtotime('-1 day'));echo()、print()、print_r() 的区别是什么?
echo和print都是语言结构,不是普通函数。print(string $arg)通常只输出一个参数。echo可以输出一个或多个字符串。print_r可以打印数组、对象等结构化内容。
include 和 require 的区别是什么?如何避免重复包含?
include失败通常只产生警告。require失败会直接中断执行。- 避免重复包含可以使用:
include_oncerequire_once
PHP 中传值与传引用有什么区别?
- 传值:函数内部修改不影响外部变量。
- 传引用:函数内部修改会影响原变量。
如果使用引用参数,需要在形参前加 &。
如何实现字符串翻转?
最直接的写法:
echo strrev($str);如果是中文字符串,不能直接用 strrev(),需要按字符而不是按字节处理。
如何实现中文字符串截取且不乱码?
推荐优先使用多字节函数:
echo mb_substr($str, 0, 10, 'UTF-8');现代项目里一般不建议再自己按字节手工拆分。
如何从一个标准 URL 中高效取出文件扩展名?
推荐先拿路径,再取扩展名:
$path = parse_url($url, PHP_URL_PATH);
$ext = pathinfo($path, PATHINFO_EXTENSION);截取文件名后缀有哪些方法?
至少可以说这几种:
pathinfo($filename, PATHINFO_EXTENSION)strrchr($filename, '.')explode('.', $filename)后取最后一段
其中最推荐的是:
$ext = pathinfo($filename, PATHINFO_EXTENSION);empty() 和 isset() 的区别是什么?
isset():判断变量是否存在且不为NULLempty():判断变量是否为空值
例如:
- 变量为
0:empty()为true,isset()为true - 变量未定义:
empty()为true,isset()为false
如何判断变量是否已设置、是否为空?
常见组合方式是:
- 先用
isset()判断是否存在 - 再用
empty()判断是否为空值
这是 PHP 面试里的高频基础题。
== 和 === 的区别是什么?
==:只比较值,会发生类型转换。===:同时比较值和类型。
业务代码里通常更推荐优先使用 ===。
'$var' 和 "$var" 的区别是什么?
- 单引号字符串不会解析变量。
- 双引号字符串会解析变量和部分转义字符。
例如:
$var = 'php';
echo '$var'; // 输出 $var
echo "$var"; // 输出 php@foo() 和 foo() 的区别是什么?
@ 是错误控制运算符。
foo():报错会正常输出。@foo():会抑制该表达式产生的错误提示。
for 和 foreach 哪个更快?
这类问题不能脱离具体场景绝对判断,但在数组遍历场景里,foreach 通常更常用、也更适合表达语义。
更稳妥的说法是:
- 不要只背“谁更快”,要结合数据结构、访问方式和实际压测结果来判断。
- 在 PHP 业务代码里,
foreach往往可读性更好。
PHP 中 heredoc 的结束标志有什么要求?
- 必须单独占一行。
- 结束标识前后不能有多余空格和字符。
- 结尾通常以分号结束。
error_reporting() 有什么作用?
用于设置 PHP 错误报告级别,决定哪些错误、警告、提示会被报告出来。
例如:
error_reporting(E_ALL);如何验证电子邮箱格式是否正确?
推荐直接使用过滤器:
filter_var($email, FILTER_VALIDATE_EMAIL)如何获取当前执行脚本路径和参数?
常见变量包括:
$_SERVER['PHP_SELF']$_SERVER['REQUEST_URI']$_SERVER['QUERY_STRING']$_GET
如果要拿完整 URL,通常还需要结合 HTTP_HOST 和协议判断。
下面哪项没有将 john 添加到 users 数组中?
(a) $users[] = 'john';
(b) array_add($users, 'john');
(c) array_push($users, 'john');
(d) $users ||= 'john';正确答案是 b 和 d:
- PHP 中没有
array_add这个内置函数。 d不是合法的 PHP 数组追加写法。
评论
使用 GitHub 账号即可参与加载较慢?可 直接前往 GitHub Discussions 查看与参与。